解决vue使用bus被多次触发问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决vue使用bus被多次触发问题相关的知识,希望对你有一定的参考价值。
参考技术A 很简单,先解绑再接收。造成原因个人理解是事件在触发后接收方还没有来得及作出响应就会一直堆积起来,每次都会叠加查看bus如何使用请看 vue中使用bus总线(eventbus) 实现兄弟组件间的通讯
vue中eventbus被多次触发(vue中使用eventbus踩过的坑)bus.$on事件被多次绑定
问题描述:只要页面没有强制刷新,存在组件切换,bus.$on方法会被多次绑定,造成事件多次触发
解决办法:在每次调用方法前先解绑事件( bus.$off ),然后在重新绑定( bus.$on )
bus.$off("backUpLevel");
bus.$on(‘backUpLevel‘, () => {
if(self.ONION.length <= 1){
self.jumpSubDir()
}else{
let len = self.ONION.length-1
self.jumpTeamId(self.ONION[len].id,self.ONION[len].name,self.ONION[len].type)
}
})
解决:
看一下github上提出的。issue
https://github.com/vuejs/vue/issues/3399
尤大大提出了以下解决:
*就是说,这个$on事件是不会自动清楚销毁的,需要我们手动来销毁。(不过我不太清楚这里的external bus 是什么意思,有大神能解答一下的吗,尤大大也提到如果是注册的是external bus 的时候需要清除)****
所以。我在B组件页面中添加Bus.$off来关闭。代码如下:
// 在B组件页面中添加以下语句,在组件beforeDestory的时候销毁。
beforeDestroy () {
bus.$off(‘get‘, this.myhandle)
},
以上是关于解决vue使用bus被多次触发问题的主要内容,如果未能解决你的问题,请参考以下文章
vue中使用bus传值时,接收页面多次触发接收方法,多个页面公用一个bus时也会触发所有打开过的bus