[vue]全局事件总线,从此不再头疼兄弟组件通信~

459 阅读1分钟

这是一种vue中组件间的通信方式,适用于 任意组件间通信

1. 安装全局事件总线

前置知识:Vue的实例对象上有 $on$emit$off、 事件,这些事件可以用来进行通信

new Vue({
    ......
    beforeCreate(){
        Vue.prototype.$bus = this  //在Vue的原型对象上绑定$bus指向vm
    },
    ......
})

2. 使用事件总线

  • 定义事件:A组件要接收数据,则在A组件中给$bus绑定自定义事件
mounted(){
    this.$bus.$on('cb',(args)=>{// 拿到数据后的处理})
}
  • 触发事件
this.$bus.$emit('cb','我传递的数据')
  • 解绑事件(最好在beforeDestory钩子中)
beforeDestory(){
    this.$bus.$off('cb')
}

结语

以上就是事件总线(EventBus)的定义以及使用方式了~