使用bus在兄弟组件间传递值时,可能会有多个组件监听通过bus传出的值。比如:
组件A的一个按钮事件中有这么一句:bus.$emit('getUnitId',data);组件B、C、D中监听接收。
在组件B中接收的代码如下
mounted(){
bus.$on("getUnitId", function(data){
console.log(data);
});
},
发现组件B中的 console.log(data) 被执行了多次。
解决:
每个监听这个bus事件的组件,按如下代码修改:
mounted(){
bus.$on("getUnitId", this.dealBusData);
},
methods:{
dealBusData(data){
console.log(data);
}
},
beforeDestroy(){
bus.$off('getUnitId',this.dealBusData);//组件销毁时关闭监听
},
还有一种问题是跳转时通过bus传递会存在的问题。之前也遇到过,参考链接: