詳談vue組件間事件派發與接收

在vue的開發中,常常會在兩個組件間進行事件的通訊 在vue1.0中咱們使用dispatch 和broadcastcss

child.vue:html

this.$dispatch('eventName',this.data);
複製代碼

parent.vue:vue

event:{
 'eventName':function(data) {
 // 執行的方法
 }
}
複製代碼

可是在vue2.0中dispatch 和broadcast被棄用,由於基於組件樹結構的事件流方式實在是讓人難以理解,而且在組件結構擴展的過程當中會變得愈來愈脆弱,而且這隻適用於父子組件間的通訊。官方給出的最簡單的升級建議是使用集中的事件處理器,並且也明確說明了 一個空的vue實例就能夠作到,由於Vue 實例實現了一個事件分發接口 node

image.png
在vue2.0中在初始化vue以前,給data添加一個 名字爲eventhub 的空vue對象

new Vue({
 el: '#app',
 router,
 render: h => h(App),
 data: {
 eventHub: new Vue()
 }
})
複製代碼

某一個組件內調用事件觸發webpack

this.$root.eventHub.$emit('eventName', event.target);
複製代碼

另外一個組件內調用事件接收, 在組件銷燬時接除事件綁定,使用$off方法 介紹一個全棧開發交流學習圈,歡迎加入Q羣:864305860web

created() {
 this.$root.eventHub.$on('eventName',(target) => {
 this.functionName(target)
 });
},
method:{
 functionName(target) {
 console.log(target);
 }
}
複製代碼

瞭解更多 本次給你們推薦一個免費的學習羣,裏面歸納移動應用網站開發,css,html,webpack,vue node angular以及面試資源等。 對web開發技術感興趣的同窗,歡迎加入Q羣:864305860,無論你是小白仍是大牛我都歡迎,還有大牛整理的一套高效率學習路線和教程與您免費分享,同時天天更新視頻資料。 最後,祝你們早日學有所成,拿到滿意offer,快速升職加薪,走上人生巔峯。面試

相關文章
相關標籤/搜索