$on被多次触发
具体现象:
在使用全局事件总线的时候发现,明明只emit了一次$on监听绑定的事件却被触发了两次甚至多次。
产生原因:
父组件emit出了事件,这个过程需要一定时间,这段时间过长,子组件还未接收到父组件的emit,父组件认为子组件没有收到,于是再次发送emit... 最终子组件收到了多个emit,自身的监听的事件被触发了多次。因此就出现了:父组件内的emit只调用了一次(多次emit发生在EventBus内部),子组件绑定的监听事件却被触发了多次。
解决方案:
每次监听事件之前在子组件中清除上一次的监听:
created(){
EventBus.$off('test');
EventBus.$on('test',this.getInfo);
},