如何正确观察 Vue.js 中的嵌套数据

让我们讨论如何正确观察道具变化,看看哪种方法适合情况。

我们可以使用深度观察器,但是,它会检测对 item 数组中对象的任何更改以及对数组的添加:

watch: {
  item: {
     handler(val){
       //do stuff
     },
     deep: true
  }
}

其中我们应该在查看数组或者对象时将 deep 设置为 true,以告诉 Vue 应该查看嵌套数据的更改。

要不监视顶级对象上的每一个变化,只需监视一个计算,而不是:

const app = new Vue({
  el: '#app',
  computed: {
    foo() {
      return this.item.foo;
    }
  },
  watch: {
    foo() {
      console.log('Foo Changed!');
    }
  },
  data: {
    item: {
      foo: 'foo'
    }
  }
})

Watched props 有时会与计算属性混淆,因为它们以相同的方式运行。
要更改状态,我们应该使用计算道具。
使用 watch 更新状态可能很危险,因为组件和父组件都在更新相同的状态(直接和间接)。

日期:2020-06-02 22:17:25 来源:oir作者:oir