2023 Vue直播班筆記 - Mixins 混合元件方法

閱讀時間約 5 分鐘
此筆記僅以個人理解方式記錄

前言

我們在實作中,難免會遇到在不同組件中,卻有需求相同的資料格式,因此 mixins 可以達到我們的需求,除了 data 以外也包含了 methods 可以共用,舉例來說,學生資料可能會在,班級跟社團內被使用,當我們要撰寫元件時,就可以省略多餘的 data 定義。

raw-image


敘述

先準備示範程式碼,我們在路徑 /pageA 示範

<template>
<h1 class="mb-5">pageA 首頁</h1>
<p class="py-3 mb-5 border border-1">顯示mixinx name => {{ name }}</p>
</template>

<script>
export default {

}
</script>


畫面呈現為 name 找不到出現異常,目前很正常因為沒定義。

raw-image


接下來加入 mixins ,我們也先準備程式碼,該元件這裡命名為 MixinsPage.vue

<template>
<p>MixinsPage</p>
</template>
<script>
export default{
data(){
return{
name:'我是 MixinsPage 的 data'
}
}
}
</script>


回到 PageA 加入 mixins ,如下

<template>
<h1 class="mb-5">pageA 首頁</h1>
<p class="py-3 mb-5 border border-1">顯示mixinx name => {{ name }}</p>
</template>
<script>
import MixinxPage from "../components/mixinx/MixinxPage.vue";
export default {
mixins: [MixinxPage],
}
</script>


加入後原本畫面 name 找不到的異常也沒了,也確定 MixinsPage 的 name 有被PageA使用。

raw-image
注意!!!
1.如果原本元件內有同名的資料名稱或是函式名稱,會以該元件本身為優先
2.可以同時共用多個,例如 mixins: [MixinxPage,CartPage],但是後方共用的會覆蓋前方共用的,最後如果主元件有,還是以主元件優先權為第一


最後補充

被共用的元件,其還是有生命週期

-PageA.vue

<template>
<h1 class="mb-5">pageA 首頁</h1>
<p class="py-3 mb-5 border border-1">顯示mixinx name => {{ name }}</p>
</template>
<script>
import MixinxPage from "../components/mixinx/MixinxPage.vue";
export default {
mixins: [MixinxPage],
data() {
return {
name: '我是 PageA 的 data'
}
},
methods:{
mixinxConsole(){
console.log('我是PageA Fn');
}
},
created() {
console.log('PageA Created');
},
mounted() {
console.log('PageA mounted');
}
}
</script>


-MixinsPage.vue

<template>
<p>MixinsPage</p>
</template>
<script>
export default{
data(){
return{
name:'我是 MixinsPage 的 data'
}
},
methods:{
MixinsConsole(){
console.log('我是Mixins Fn');
}
},
created(){
console.log('MixinsPage Created');
},
mounted(){
console.log('MixinsPage mounted');
}
}
</script>


結果如下圖,MixinsPage 的 name 被 PageA 引用了,而兩者的生命週期也有保持著規律運行。

raw-image


  • joker
  • 2024/03/05
avatar-img
3會員
21內容數
是一隻喜愛前端勇往直前的霹靂酷樂貓
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Joker Cat 的其他內容
VUE為單向資料流的框架,在鄰近層級之間我們可以依靠 props 由父層向子層來傳遞需要的資料,然而遇到跨層級的架構時,雖然也是可以一層層傳進去,只是這會造成多餘的處理及凌亂的程式碼,因此才有了 "provide" 來解決我們跨層級的需求。 層級展示圖
自訂元件生成位置顧名思義就是可以指定部分HTML區塊渲染在特定的畫面上,即使在不同組件也能把A組件內的部分畫面,展現在B組件上,以下方程式舉例。
這次要講的是 $route 及 $router 的區別,看似相似的兩個東西,其實應用時機也大不相同,以下以簡單的幾個例子舉例。
2023 Vue直播班筆記 - 動態路由Props,接續之前的一般動態路由。分為 "寫死" 及 "彈性" 兩種。
Vue Router 動態路由,假設有一個賣場,裡面有 100 個商品,我們不可能針對它們創 100 對應的路由,因此我們需要一個動態路由,利用"路徑帶參數"的方式來撈取商品的資訊。
Vue Router 及 具名視圖,擺脫以往切換依賴 CSS display:none 跟 display:block 互相配合,有時還得搭配 z-index 來調整層級跟 opacity 透明度的麻煩,而 Vue Router 完美的解決了這棘手的問題,且能客製頁面想要呈現的擺飾。
VUE為單向資料流的框架,在鄰近層級之間我們可以依靠 props 由父層向子層來傳遞需要的資料,然而遇到跨層級的架構時,雖然也是可以一層層傳進去,只是這會造成多餘的處理及凌亂的程式碼,因此才有了 "provide" 來解決我們跨層級的需求。 層級展示圖
自訂元件生成位置顧名思義就是可以指定部分HTML區塊渲染在特定的畫面上,即使在不同組件也能把A組件內的部分畫面,展現在B組件上,以下方程式舉例。
這次要講的是 $route 及 $router 的區別,看似相似的兩個東西,其實應用時機也大不相同,以下以簡單的幾個例子舉例。
2023 Vue直播班筆記 - 動態路由Props,接續之前的一般動態路由。分為 "寫死" 及 "彈性" 兩種。
Vue Router 動態路由,假設有一個賣場,裡面有 100 個商品,我們不可能針對它們創 100 對應的路由,因此我們需要一個動態路由,利用"路徑帶參數"的方式來撈取商品的資訊。
Vue Router 及 具名視圖,擺脫以往切換依賴 CSS display:none 跟 display:block 互相配合,有時還得搭配 z-index 來調整層級跟 opacity 透明度的麻煩,而 Vue Router 完美的解決了這棘手的問題,且能客製頁面想要呈現的擺飾。
你可能也想看
Google News 追蹤
當某個資訊塊的內容引起我的共鳴時,我會開一個新筆記,將我的感受與個人經驗結合,自由書寫至300字左右。我稱這類短文為良品3,這些短文既有對學到內容的詮釋,也有個人經驗的分享。加上標題後,這些短文非常適合作為每日更新社群媒體的材料。
Thumbnail
各位使用 Vue.js 開發的小夥伴們,你們都怎麼實作父子層組件資料的雙向綁定呢?如果你還在寫 prop + emit 的話,不妨進來看看吧。
Thumbnail
一般在使用 TypeScript 的時候,大家都有遇過定義列舉資料的情境吧。 不過不管是 enum 和 literal 的方式其實都有些小缺點,以下推薦一個個人認為體驗更好的方式。
Thumbnail
在 TypeScript 中,套件是模組化代碼的集合,可以提高代碼的可重用性和可維護性。常見的套件包括各種庫和框架,如 lodash、express 等。以下是有關引用套件、自定義套件和常見套件的詳細介紹。
Thumbnail
樣板模式的定義極為簡單,卻是大型系統程式、WEB/APP應用框架的設計核心,完美展現設計模式的價值: 簡單、高效、強大。
  嗯……這篇是類疊跟設問的場合。也是快變成國文課的場合。 ❈❈❈   ※類疊法:   接二連三地反覆使用相同的一個字詞、語句。可增加文章的節奏感,凸顯文章的重點。   讓句型更加生動,避免枯燥,任何詞性都可以被重疊。名詞重疊常表示數量龐大;動詞重疊表示動作的進行;形容詞或副詞的重疊表示委婉
  接著我們繼續來談「整合式大綱」、「編劇式大綱」。 ❈❈❈   ※整合式:   結合「表格式」、「鬆散式」兩者,依劇情片段的份量,或作者是否熟悉該段落,決定是否要寫細節。總之,相當自由!   不過這有點像把大綱當成一種工具書使用,花樣非常多,甚至可以設連結跳轉頁面啊,多半需要一點文書處理的
當某個資訊塊的內容引起我的共鳴時,我會開一個新筆記,將我的感受與個人經驗結合,自由書寫至300字左右。我稱這類短文為良品3,這些短文既有對學到內容的詮釋,也有個人經驗的分享。加上標題後,這些短文非常適合作為每日更新社群媒體的材料。
Thumbnail
各位使用 Vue.js 開發的小夥伴們,你們都怎麼實作父子層組件資料的雙向綁定呢?如果你還在寫 prop + emit 的話,不妨進來看看吧。
Thumbnail
一般在使用 TypeScript 的時候,大家都有遇過定義列舉資料的情境吧。 不過不管是 enum 和 literal 的方式其實都有些小缺點,以下推薦一個個人認為體驗更好的方式。
Thumbnail
在 TypeScript 中,套件是模組化代碼的集合,可以提高代碼的可重用性和可維護性。常見的套件包括各種庫和框架,如 lodash、express 等。以下是有關引用套件、自定義套件和常見套件的詳細介紹。
Thumbnail
樣板模式的定義極為簡單,卻是大型系統程式、WEB/APP應用框架的設計核心,完美展現設計模式的價值: 簡單、高效、強大。
  嗯……這篇是類疊跟設問的場合。也是快變成國文課的場合。 ❈❈❈   ※類疊法:   接二連三地反覆使用相同的一個字詞、語句。可增加文章的節奏感,凸顯文章的重點。   讓句型更加生動,避免枯燥,任何詞性都可以被重疊。名詞重疊常表示數量龐大;動詞重疊表示動作的進行;形容詞或副詞的重疊表示委婉
  接著我們繼續來談「整合式大綱」、「編劇式大綱」。 ❈❈❈   ※整合式:   結合「表格式」、「鬆散式」兩者,依劇情片段的份量,或作者是否熟悉該段落,決定是否要寫細節。總之,相當自由!   不過這有點像把大綱當成一種工具書使用,花樣非常多,甚至可以設連結跳轉頁面啊,多半需要一點文書處理的