关于前端:解决vue事件总线on中获取不到组件实例

在应用vue事件总线执行$emit("someEvent") 时,事件总线$on回调函数中this.$refs.someComponent报错,提醒someComponent组件不存在。

起因是在组件切换时someComponent已销毁 ,然而对应的事件监听还存在,导致起初emit到了历史蕴含已销毁组件的事件函数。

解决办法是在应用事件总线时及时在组件beforeDestroy(销毁),同时革除掉对应注册的事件 eventBus.$off('someEvent')

 mounted () {
   eventBus.$on('someEvent', () => { //执行someComponent中的doAddList
     this.$refs.someComponent.doAddList(...);
   });
 },
 beforeDestroy () {
   eventBus.$off('someEvent')
 },

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理