全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-20 5 分钟 ✍️ juanwangdev

深度侦听

默认情况下,watch 仅侦听引用变化。

问题

JavaScript
const user = ref({ name: '张三', age: 18 })

watch(user, (newVal) => {
  console.log('变化了')
})

user.value.age = 20 // 不会触发
user.value = { name: '李四', age: 20 } // 会触发

深度侦听

JavaScript
watch(user, (newVal) => {
  console.log('内部变化:', newVal)
}, { deep: true })

user.value.age = 20 // 会触发

深度侦听会遍历对象所有嵌套层级。

侦听对象属性

JavaScript
watch(
  () => user.name,
  (newName) => console.log('名字变了:', newName)
)

使用 getter 函数侦听单个属性。

性能注意

深度侦听开销较大,大数据量时建议:

  • 仅侦听需要的属性
  • 使用 getter 函数精确控制

要点总结

  • { deep: true } 开启深度侦听
  • 适用于对象/数组内部变化
  • 深度侦听有性能开销,谨慎使用
  • 单个属性用 getter 函数

📝 发现内容有误?点击此处直接编辑

← 上一篇 侦听器的基本用法
下一篇 → 立即执行侦听器
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库