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)
相关推荐
吴佳浩5 分钟前
OpenClaw、Claude Code 等 Agent 为什么都选择 Node.js?
前端·人工智能·langchain
小小小小宇9 分钟前
React 19 useActionState 深度解析 & Vue 2.7 移植实战
前端
远山枫谷11 分钟前
Vue2 vs Vue3 全面对比(含代码示例+迁移指南)
前端·vue.js
z止于至善14 分钟前
服务器发送事件(SSE):前端实时通信的轻量解决方案
前端·web·服务器通信
小小小小宇14 分钟前
React useState 深度源码原理解析
前端
前端小棒槌21 分钟前
TypeScript 核心知识点
前端
Selicens24 分钟前
turbo迁移vite+(vite-plus)实践
前端·javascript·vite
答案answer24 分钟前
我的Three.js3D场景编辑器免费开源啦🎉🎉🎉
前端·github·three.js
欧阳天羲38 分钟前
AI 时代前端工程师发展路线
前端·人工智能·状态模式
Moment39 分钟前
从爆红到被嫌弃,MCP 为什么开始失宠了
前端·后端·面试