vue组件销毁时内存泄漏主因是未手动清理外部资源:需在unmounted中清除定时器、abort请求、解绑事件监听器、销毁第三方实例、停止watch并避免强引用响应式对象。

Vue组件销毁时内存泄漏,核心在于你手动引入的外部资源没被清理——Vue不会替你解绑全局事件、清除定时器、中断请求或销毁第三方实例。unmounted钩子不是自动回收开关,而是你主动释放资源的明确时机。
清理定时器和未完成的异步操作
在setup中用setTimeout、setInterval或发起fetch/axios请求后,若组件已卸载,回调仍可能执行并尝试修改响应式数据,导致警告甚至内存泄漏。
- 用ref保存定时器ID,在unmounted中调用clearTimeout或clearInterval
- 对fetch请求,创建AbortController实例,传入signal选项;在unmounted中调用controller.abort()
- 避免在then/catch里直接赋值ref,不依赖isMounted标记,优先用abort机制切断链路
解绑所有手动添加的事件监听器
通过window、document、EventBus或mitt绑定的监听器,不会随组件自动移除,必须成对清理。
vue-composition-api-best-practices
Vue 3 组合式 API 与
热门下载
相关下载
精品课程
相关推荐
/
热门推荐
/
最新课程
最新文章
