遇到的vue事件on,off的坑
组件 A 使用了 组件B
组件A产生事件:
TypeScript
this.$root.$emit('event1', param)
组件B的created()里监听了事件:
TypeScript
this.$root.$on('event1', (param)=>{...})
组件B的beforeDestroy()里取消了事件监听:
TypeScript
this.$root.$off('event1')
组件刷新时出现了:组件B2 created() ->组件B1 beforeDestroy() 导致组件B2里的监听被清除了
修改方案:
组件B的created()里监听事件,留下函数句柄
TypeScript
this.event1Callback = (param)=>{...}
this.$root.$on('event1', this.event1Callback)
组件B的beforeDestroy()里使用函数句柄取消事件监听:
TypeScript
this.$root.$off('event1', this.event1Callback)