onScopeDispose() 注册作用域销毁回调
最后更新:2026-10-22
onScopeDispose() 注册作用域销毁回调
onScopeDispose() 在当前作用域停止时执行清理:写组合式函数时用它注销全局监听、定时器等资源。
| 分组 | 响应式·进阶 |
|---|---|
| 类型 | API |
| 作用域 | 组件内 |
| Vue 版本 | 3.0+ |
| SSR 支持 | 支持 |
📝 语法
onScopeDispose(() => {
window.removeEventListener('resize', onResize)
})
⚙️ 参数
| fn | 清理函数(可多次注册) |
|---|---|
| failSilently | true 时无活跃作用域不报错(3.5+) |
返回值:无
▶ 示例
修改下面的代码,在预览区实时查看效果:
输出:
显示当前窗口宽度,缩放浏览器时实时更新。
💡 要点
ℹ️ 说明 与 onUnmounted 的区别:它绑定作用域(含 effectScope),不限于组件卸载。
💡 提示 组合式函数里优先用它:即使用户在 effectScope 里调用也能正确清理。
⚠️ 注意 必须在活跃作用域内同步调用,异步回调里调用会报错。
🏷️ 相关进阶
💡 相关案例
更多案例即将上线。
📚 相关教程
❓ 常见问题
Q 和 onUnmounted 该用哪个?
A 写在组件里用 onUnmounted;写在可复用函数里用 onScopeDispose 更通用。
Q 能注册多个清理函数吗?
A 可以,按注册顺序依次执行。
Q 没有活跃作用域会怎样?
A 会警告;3.5+ 可用第二个参数 failSilently 静默处理。