vue 3 无效监听是隐蔽性能浪费源,需通过 devtools 检查无关响应依赖、避免监听整个 props 或大型对象、禁用 computed 副作用、慎用 immediate watch、正确使用 torefs 解构,并结合 performance 面板验证触发频率。

Vue 3 中无效监听(如 watch、computed、effect 误用)是隐蔽但高频的性能浪费源头——它不报错、不卡死,却持续触发无意义更新、拖慢渲染、增加内存压力。排查关键在于识别“被监听但未实际使用”或“监听了不该监听的东西”的行为。
看组件是否在监听无关响应式数据
无效监听最常见于:监听整个大型对象、监听未在模板中使用的 ref、或在 setup 中对 props 做了冗余 watch。
- 打开 Vue Devtools 的 Components 面板,选中目标组件,右侧点开 Reactivity Dependencies
- 检查列表里是否出现明显与当前逻辑无关的字段,比如:
user.profile.address.city被监听,但模板里只用了user.name - 特别留意
props对象本身被整个监听(watch(props, ...)),这会把所有 prop 变化都纳入响应链,哪怕只关心其中一两个
查 computed 和 watch 是否做了重复或过早计算
computed 缓存失效、watch 回调执行时机不当,都会导致本可跳过的计算被反复触发。

