EventBus踩坑1

186 阅读1分钟

$on被多次触发

具体现象:

在使用全局事件总线的时候发现,明明只emit了一次$on监听绑定的事件却被触发了两次甚至多次。

产生原因:

父组件emit出了事件,这个过程需要一定时间,这段时间过长,子组件还未接收到父组件的emit,父组件认为子组件没有收到,于是再次发送emit... 最终子组件收到了多个emit,自身的监听的事件被触发了多次。因此就出现了:父组件内的emit只调用了一次(多次emit发生在EventBus内部),子组件绑定的监听事件却被触发了多次。

解决方案:

每次监听事件之前在子组件中清除上一次的监听:

created(){
    EventBus.$off('test');
    EventBus.$on('test',this.getInfo);
},