当前位置: 首页 > Web前端 > HTML

解决vue事件总线存在多个$on事件的问题

时间:2023-03-28 14:30:28 HTML

例如使用vue事件总线执行$emit("someEvent")时,this.$refs.someComponent在$on回调函数中报错事件总线,说明someComponent组件不存在。原因是组件切换时someComponent已经被销毁,但是对应的事件监听器还存在,导致事件函数emit到包含被销毁组件的history中。解决方法是在使用事件总线时及时删除组件beforeDestroy(销毁),并清除对应注册的事件eventBus.$off('someEvent')。mounted(){eventBus.$on('someEvent',()=>{//在someComponent中执行doAddListthis.$refs.someComponent.doAddList(...);});},beforeDestroy(){事件总线。$off('someEvent')},