vue 兄弟组件bus通信问题

//common.vue
this.$bus.emit('msg',data)
//a.vue
created(){
    this.$bus.on('msg', params => {})
},
beforeDestroy(){
    this.$bus.$off('msg')
}
//b.vue
created(){
    this.$bus.on('msg', params => {})
},
beforeDestroy(){
    this.$bus.$off('msg')
}

a组件和b组件都调用了公用组件common.vue,a组件销毁前清除了bus,a页面跳转到b页面后,导致接收不到bus的通信了

请问应该怎么解决,不清除会反复接受到数据

阅读 2.4k
5 个回答

A跳到B
先触发B created,再出发A destroy.

你应该给事件函数加一个名字(可以放到methods里) off的时候仅删除该函数。

页面都已经卸载了,再接收到通信干什么呢?这是逻辑是正常的。

卸载后又想接收到事件这个不合理

可以考虑使用VUEX, 共享数据

这种场景是需要保存‘msg’的值的状态

建议vuex

页面已经卸载了 接收不到数据的,建议用VUEX进行数据共享

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题