让我们讨论如何正确观察道具变化,看看哪种方法适合情况。
我们可以使用深度观察器,但是,它会检测对 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
