這篇文章主要介紹了vue元件之間通訊方式,結合例項形式總結分析了vue.js的8種元件通訊方式與相關操作注意事項,寫的十分的全面細緻,具有一定的參考價值,對此有需要的朋友可以參考學習下。如有不足之處,歡迎批評指正。對於vue來說,元件之間的訊息傳遞是非常重要的,下面是我對元件之間訊息傳遞的各種方式的總結,總共有8種方式。
1. props和$emit
父元件向子元件傳遞資料是通過prop傳遞的,子元件傳遞資料給父元件是通過$emit觸發事件來做到的。
在上面的例子中,有父元件parent和子元件child。vue.component('child',
},template:`
`,props:['message'],//得到父元件傳遞過來的資料
methods:}})
vue.component('parent',
},methods:}})
template:``})
1).父元件傳遞了message資料給子元件,並且通過v-on繫結了乙個getchilddata事件來監聽子元件的觸發事件;
2).子元件通過props得到相關的message資料,最後通過this.$emit觸發了getchilddata事件。
2.att
rs和attrs和
attrs和
listeners
第一種方式處理父子元件之間的資料傳輸有乙個問題:如果父元件a下面有子元件b,元件b下面有元件c,這時如果元件a想傳遞資料給元件c怎麼辦呢?
如果採用第一種方法,我們必須讓元件a通過prop傳遞訊息給元件b,元件b在通過prop傳遞訊息給元件c;要是元件a和元件c之間有更多的元件,那採用這種方式就很複雜了。vue 2.4開始提供了att
rs和attrs和
attrs和
listeners來解決這個問題,能夠讓元件a之間傳遞訊息給元件c。
3. **事件匯流排上面兩種方式處理的都是父子元件之間的資料傳遞,而如果兩個元件不是父子關係呢?這種情況下可以使用**事件匯流排的方式。新建乙個vue事件bus物件,然後通過bus.emivue.component('c',
}vue.component('b',
},template:`
`,props:['message'],//得到父元件傳遞過來的資料
methods:}})
vue.component('a',
},methods:,
//執行c子元件觸發的事件
getcdata(val)}})
template:``})
t觸發事
件,bu
s.emit觸發事件,bus.
emit觸發
事件,b
us.on監聽觸發的事件。
4. provide和inject父元件中通過provider來提供變數,然後在子元件中通過inject來注入變數。不論子元件有多深,只要呼叫了inject那麼就可以注入provider中的資料。而不是侷限於只能從當前父元件的prop屬性來獲取資料,只要在父元件的生命週期內,子元件都可以呼叫。vue.component('brother1',
},template:`
this is brother1 compoent!
`,methods:
}vue.component('brother2',}
`,data()
},mounted())}})
//**事件匯流排
var bus=new vue();
template:``})
5. v-model父元件通過v-model傳遞值給子元件時,會自動傳遞乙個value的prop屬性,在子元件中通過this.$emit(『input』,val)自動修改v-model繫結的值vue.component('child',
},template:`
})vue.component('parent',,
data()}})
template:``})
6. parvue.component('child',,
data()
},methods:
},template:`
})vue.component('parent',}
`,data()}})
template:``})
ent和
parent和
parent
和children
7. boradcast和dispatchvue1.0中提供了這種方式,但vue2.0中沒有,但很多開源軟體都自己封裝了這種方式,比如min ui、element ui和iview等。vue.component('child',,
data()
},methods:
},template:`
})vue.component('parent',,
data()}})
template:``})
比如如下**,一般都作為乙個mixins去使用, broadcast是向特定的父元件,觸發事件,dispatch是向特定的子元件觸發事件,本質上這種方式還是on和on和emit的封裝,但在一些基礎元件中卻很實用。
8. vuex處理元件之間的資料互動如果業務邏輯複雜,很多元件之間需要同時處理一些公共的資料,這個時候才有上面這一些方法可能不利於專案的維護,vuex的做法就是將這一些公共的資料抽離出來,然後其他元件就可以對這個公共資料進行讀寫操作,這樣達到了解耦的目的。function broadcast(componentname, eventname, params) else
});}export default
}if (parent)
},broadcast(componentname, eventname, params)
}};
結語
本次給大家推薦乙個免費的學習群,裡面概括移動應用**開發,css,html,webpack,vue node angular以及面試資源等。
對web開發技術感興趣的同學,歡迎加入q群:???619586920
vue元件之間8種元件通訊方式總結
對於vue來說,元件之間的訊息傳遞是非常重要的,下面是我對元件之間訊息傳遞的各種方式的總結,總共有8種方式。父元件向子元件傳遞資料是通過prop傳遞的,子元件傳遞資料給父元件是通過 emit觸發事件來做到的。vue.component child template props message 得到父...
vue元件之間8種元件通訊方式總結
對於vue來說,元件之間的訊息傳遞是非常重要的,下面是我對元件之間訊息傳遞的各種方式的總結,總共有8種方式。父元件向子元件傳遞資料是通過prop傳遞的,子元件傳遞資料給父元件是通過 emit觸發事件來做到的。vue.component child template props message 得到父...
vue元件之間8種元件通訊方式總結
對於vue來說,元件之間的訊息傳遞是非常重要的,下面是我對元件之間訊息傳遞的各種方式的總結,總共有8種方式。父元件向子元件傳遞資料是通過prop傳遞的,子元件傳遞資料給父元件是通過 emit觸發事件來做到的。vue.component child template props message 得到父...