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)
相关推荐
爱丶不疚几秒前
BrowserWindow:你的Electron 应用可以不用手写红绿灯
前端·electron
李溪白2 分钟前
事件循环(Event Loop):JavaScript 里的“时间管理大师”与“插队狂魔”
javascript
mONESY4 分钟前
告别 Vibe Coding:用 SDD 把一个 Chrome 翻译插件从 0 做到 1
javascript
用户594404103567 分钟前
【完整fx】Vue3 + TS + Leafletjs 打造企业级原神大地图
前端
xcLeigh8 分钟前
Go入门:rune与byte的区别和使用场景
android·javascript·golang
计算机魔术师23 分钟前
AI开源社区迎来最大并购案:Hugging Face以129亿美元估值入局英伟达
前端
mayaairi27 分钟前
JS DOM与事件处理完全指南
服务器·前端·javascript
恋猫de小郭40 分钟前
Firebase 如何让全球 Android 和 Flutter 开发者集体 Build Fail
android·前端·flutter
墨白曦煜40 分钟前
智能体架构范式总结(React、Plan-And-Solve、Reflection)
前端·react.js·前端框架
qq_4260039644 分钟前
多语言新增语种全量测试策略的测试范围
前端·javascript·python·自动化