vue 祖先組件操作後代組件方法

 

 前言:最近寫代碼遇到一問題:祖先級別的組件怎麼操作孫子的兒子的組件方法(是不是已經繞暈了),在網上搜了半天都是父子傳參,父子操作,暈暈乎乎的想起了bus(事件總線),

原理就是:是在vue原型上掛載(生命周期為實例創建之前beforcreate),通過這個實例里的事件派發和事件監聽實現跨組件通信,設計模式叫做觀察者模式(vue上就有$on,$emit 、$off)。

話不多說了,直接看代碼吧

一、首先

// 在 src/mian.js 

new Vue({
    router,
    store: new Vuex.Store(Store),
    el: '#app',
    render: h => h(App),
    beforeCreate(){
	Vue.prototype.$bus = this  //安裝全局事件總線
     }
})

二、在觸發事件的的祖先組件方法內 

this.$bus.$emit("holle",666)

三、後代組件(不限於後代,就是任何組件)接受傳參

mounted() {
			
			this.$bus.$on("holle",(data)=>{
				console.log(data)  //666
			})
		},

四、一定要在接收的組件銷毀鉤子里卸載掉

beforeDestroy() {
			this.$bus.$off("holle")
		},

 總結:以上就是我對bus的使用和理解,有寫的不到位的地方,還望各位指正,留言區歡迎大家發言評論哦!!!

Tags: