跳到主要内容

Vue watch怎么深度监听对象变化 ?

参考答案:

在 Vue 中,watch 可以用来观察和响应 Vue 实例上的数据变化。当你需要深度监听一个对象的变化时,你需要确保 Vue 能够检测到对象内部属性的变化。默认情况下,Vue 只能检测到对象属性的变化,而不能检测到对象内部嵌套属性的变化。

为了深度监听一个对象的变化,你可以使用 Vue 的 watch 选项,并为其提供一个深度监听器(deep watcher)。下面是一个示例:

<template>
  <div>
    <p>原始对象: {{ obj }}</p>
    <p>监听结果: {{ watchedObj }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      obj: {
        nestedObj: {
          value: 'initial value'
        }
      },
      watchedObj: ''
    };
  },
  watch: {
    obj: {
      handler(newVal, oldVal) {
        this.watchedObj = '对象发生变化';
      },
      deep: true // 深度监听
    }
  }
};
</script>

在上面的示例中,我们创建了一个名为 obj 的对象,并在 watch 选项中为它添加了一个深度监听器。deep: true 表示我们要深度监听 obj 对象的变化。当 obj 或其内部嵌套属性发生变化时,handler 函数将被调用,并接收到新旧值作为参数。在这个例子中,我们只是简单地将 watchedObj 的值设置为 '对象发生变化' 来演示监听效果。

通过使用深度监听器,你可以确保 Vue 能够检测到对象内部属性的变化,并在需要时执行相应的操作。