事件总线的bug

《转载》
原作者:Object_name
来源:CSDN
原文:https://blog.csdn.net/qq_21132509/article/details/81505081

项目中使用了事件总线eventBus来进行两个组件间的通信,
使用方法是是建立eventBus.js文件,暴露一个空的Vue实例,如下:

import Vue from 'vue'
export default new Vue();

在需要通信的两个组件中分别import

import bus from "common/utils/eventBus";

然后就可以通过emit、on进行通信:如下:

一个组件中发射
bus.$emit('xxx',this.searchContent)

另一个组件中接收
bus.on()会触发多次,具体原因跟生命周期有关,详细分析可参考:
https://blog.csdn.net/chern1992/article/details/80392465

解决办法就是在beforeDestroy或destroy周期中将事件进行销毁,使用off('xxx')
},

附上github上Vue作者尤大大关于这问题的解答:
https://github.com/vuejs/vue/issues/3399

你可能感兴趣的:(事件总线的bug)