事件总线是为方便vue中组件之间的通信而出现的
核心原理:
VueComponent.prototype.__proto__ === Vue.prototype
通俗来讲就是组件vc的实例对象可以访问到Vue原型对象上的方法,因此可以在vue原型对象上创建一个对象,这样所有的组件实例vc都能访问该对象从而实现组件间通信
创建事件总线:
new Vue({
render: h => h(App),
beforeCreate(){
Vue.prototype.$bus = this
},
}).$mount('#app')
在beforeCreate生命周期创建事件总线,用 $bus 命名
在总线上对事件进行绑定和处理,就行轻松实现组件间事件通信
Vue 原型对象上包含事件处理的方法
$on(eventName, listener): 绑定自定义事件监听
$emit(eventName, data): 执行自定义事件
$off(eventName): 解绑自定义事件监听
$once(eventName, listener): 绑定事件监听, 但只能处理一次