摘要:有兩個(gè)非常相似的組件,他們的基本功能是一樣的,可以局注冊(cè)一個(gè)混合,影響注冊(cè)之后所有創(chuàng)建的每個(gè)實(shí)例,這就是。全局下注冊(cè)比如在構(gòu)建的項(xiàng)目中,中定義了一個(gè)并且掛載在實(shí)例上,那么在實(shí)例下的每個(gè)組件都會(huì)在掛載的時(shí)候執(zhí)行一次這個(gè)方法,輸出多次
mixins
mixin: 有兩個(gè)非常相似的組件,他們的基本功能是一樣的,可以局注冊(cè)一個(gè)混合,影響注冊(cè)之后
所有創(chuàng)建的每個(gè) Vue 實(shí)例,這就是mixin。
Mixin對(duì)編寫(xiě)函數(shù)式風(fēng)格的代碼很有用,一般情況下不會(huì)改變函數(shù)作用域外部的任何東西,輸入相同,得到的結(jié)果也一定相同。
基礎(chǔ)用法新建一個(gè)mixin.js 文件,
minix.js export const myminix= { data(){ return { } }, mounted(){ this.sayhello(); }, created(){ }, methods:{ sayhello:function(){ console.log("hello from myMinix!"); } } }
一個(gè)簡(jiǎn)單的方法,在組件被掛載后 輸出 “hello”,
然后在想要使用這個(gè)公共方法的組件中引入進(jìn)去。
other.vue script: export default { mixins:[myminix], }
這樣引入后的效果,就是在other的組件中,同樣加入了sayhello() 方法
other.vue script: export default { mounted(){ this.sayhello(); }, methods:{ sayhello:function(){ console.log("hello from myMinix!"); } } //output "hello from myMinix"
在other 組件被掛載后,輸出hello from myMinix,
沖突到這里,會(huì)有一個(gè)問(wèn)題,如果other.vue 本身也有同樣是操作掛載在mounted 上,到底誰(shuí)會(huì)先執(zhí)行,
other.vue script: export default { mixins:[myminix], mounted(){ this.sayhello(); }, methods:{ sayhello:function(){ console.log("hello from other instance!"); } } //output "hello from myMinix" //output "hello from myMinix"
輸出了兩次一樣的結(jié)果,都來(lái)自other 組件, 第一個(gè)函數(shù)被調(diào)用時(shí),沒(méi)有被銷毀,它只是被重寫(xiě)了。我們?cè)谶@里調(diào)用了兩次sayhello()函數(shù)。
全局下注冊(cè)minix比如在 vue-cli 構(gòu)建的項(xiàng)目中,main.js 中定義了一個(gè)minix,并且掛載在vue 實(shí)例上,
Vue.mixin({ mounted() { console.log("hello from other"); } }) new Vue({ })
那么在 Vue 實(shí)例下的每個(gè)組件都會(huì) 在掛載的時(shí)候執(zhí)行一次這個(gè)方法,輸出多次 “hello from other”
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/87249.html
摘要:而我覺(jué)得現(xiàn)在出一個(gè)白話版,是讓大家有興趣去研究源碼的時(shí)候,可以提前理清一下思路。相當(dāng)于封裝,提取公共部分。顯然,今天我不是來(lái)教大家怎么用的,怎么用看文檔就好了,我是講解生命的真諦內(nèi)部的工作原理。而這個(gè)不會(huì)合并,直接替換掉整個(gè)選項(xiàng) 寫(xiě)文章不容易,點(diǎn)個(gè)贊唄兄弟專注 Vue 源碼分享,文章分為白話版和 源碼版,白話版助于理解工作原理,源碼版助于了解內(nèi)部詳情,讓我們一起學(xué)習(xí)吧研究基于 Vue版...
摘要:兩個(gè)對(duì)象鍵名沖突時(shí),取組件對(duì)象的鍵值對(duì)也使用同樣的策略進(jìn)行合并。代碼理解全局混合也可以全局注冊(cè)混合對(duì)象。注意使用一旦使用全局混合對(duì)象,將會(huì)影響到所有之后創(chuàng)建的實(shí)例為自定義的選項(xiàng)注入一個(gè)處理器。 20190122 Vue中mixin怎么理解? mixin是為了讓可復(fù)用的功能靈活的混入到當(dāng)前組件中,混合的對(duì)象可以包含任意組件選項(xiàng)(生命周期,指令之類等等), mixin翻譯過(guò)來(lái)叫混合,高級(jí)的...
摘要:前言最近開(kāi)發(fā)的頁(yè)面以及功能大都以表格為主,接口獲取來(lái)的數(shù)據(jù)大都是需要經(jīng)過(guò)處理,比如時(shí)間戳需要轉(zhuǎn)換,或者狀態(tài)碼的轉(zhuǎn)義。首先,還是在文件中定義一個(gè)狀態(tài)碼對(duì)應(yīng)對(duì)象,這里我們將其對(duì)應(yīng)的內(nèi)容設(shè)為段落。 前言 最近開(kāi)發(fā)的頁(yè)面以及功能大都以表格為主,接口獲取來(lái)的 JSON 數(shù)據(jù)大都是需要經(jīng)過(guò)處理,比如時(shí)間戳需要轉(zhuǎn)換,或者狀態(tài)碼的轉(zhuǎn)義。對(duì)于這樣的問(wèn)題,各大主流框架都提供了類似于過(guò)濾的方法,在 Vue ...
摘要:利用可以對(duì)組件代碼進(jìn)行抽離及封裝。注如果傳入的是鉤子函數(shù),則按照數(shù)組的順序依次執(zhí)行鉤子函數(shù),且會(huì)在組件之前執(zhí)行跟淺拷貝的順序有出入頁(yè)面執(zhí)行時(shí),依次會(huì)打印 主要摘錄的是Vue教程中的疑難點(diǎn),結(jié)合demo來(lái)加深概念的理解(持續(xù)更新?。? 箭頭函數(shù)在Vue中使用 不要在選項(xiàng)屬性或回調(diào)上使用箭頭函數(shù)(demo01) var vm1 = new Vue({ data: { ...
閱讀 4430·2021-11-19 09:59
閱讀 3350·2021-10-12 10:12
閱讀 2653·2021-09-22 15:25
閱讀 3357·2019-08-30 15:55
閱讀 1202·2019-08-29 11:27
閱讀 1482·2019-08-28 18:06
閱讀 2762·2019-08-26 13:41
閱讀 2571·2019-08-26 13:41