前言
正如我们所知Vue中组件的通信场景很多, 什么跨多级父子通信, 兄弟通信等等。各种各样的解决方法网上方法都有以及多得飞起, 我就不复制黏贴, 省点ATP。在Vue生态中已经有很好的方案解决各种疑难杂症的通信问题, 针对中大型项目, 首选Vuex (用过都说好),但是如果是小型项目使用Vue的eventBus, 是一个不错的选择。我们接下来简单说下Vue的事件总线的使用和一些常见的问题。
使用方法
Vue的实例就是一个事件总线:
import Vue from 'vue';
var vm = new Vue({
mounted () {
## 此时就可以监听一个自定义事件event1
this.$on('event1', (data) => {
consolo.log(data);
});
},
methods: {
trigger () {
this.$emit('event1', '猴赛雷~');
}
}
});
vm.trigger(); ## 输出: 猴赛雷~
看得出eventBus的使用就是在一个组件内通过 o n 一 个 事 件 , 在 一 些 操 作 下 on一个事件, 在一些操作下 on一个事件,在一些操作下emit事件, 这个看起来跟订阅发布是一回事。
但是这里的eventBus是局部的, 只能在这个组件内用, 如果在一个父组件A监听了事件, 在B子组件去emit, 是没有反应的,
因为子组件B