vue 事件$on,$off的注意事项

遇到的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)
相关推荐
xrkhy1 小时前
CSS平面转换
前端·css·平面
zpjing~.~1 小时前
CSS >子元素选择器和空格
前端·css
獨枭5 小时前
使用 Spring Boot 快速构建企业微信 JS-SDK 权限签名后端服务
javascript·spring boot·企业微信
百万蹄蹄向前冲6 小时前
三句话四分钟,豆包出题把吾秀
前端·人工智能·豆包marscode
半旧5186 小时前
重构谷粒商城11:node快速入门
java·前端·重构
前端.火鸡6 小时前
认识vue中的install和使用场景
前端·javascript·vue.js
摆烂工程师7 小时前
Grok3 支持 DeeperSearch 的免费可用次数的查询了
前端·后端·程序员
pubuzhixing7 小时前
在线白板 - 如何从零实现一个自由画笔
前端·开源
hhw1991127 小时前
vue总结
前端·javascript·vue.js
学习2年半7 小时前
汇丰eee2
前端·spring