三十二、全局事件总线(GlobalEventBus)
小于 1 分钟约 203 字
(一)定义
- 一种组件间通信的方式
- 适用于 任意组件间通信
(二)安装全局事件总线
new Vue({
// ...
beforeCreate() {
// 安装全局事件总线,$bus就是当前应用的vm
Vue.prototype.$bus = this;
},
// ...
});
(三)使用事件总线
1.接收数据
- A 组件想接收数据,则在 A 组件中给 $bus 绑定自定义事件
- 事件的 回调留在 A 组件自身
methods() {
demo(data) {...}
},
// ...
mounted() {
this.$bus.$on("xxx", this.demo);
// 或者
this.$bus.$on("xxx", (data) => {...});
}
2.提供数据
this.$bus.$emit("xxx", 数据);
(四)备注
- 最好在 beforeDestroy 钩子中,用 $off 去解绑 当前组件所用到的事件