watch属性是不监听array内元素的变化的吗
来源:2-9 数据,方法,计算属性和侦听器(2)

陈加州
2021-12-26
我想知道watch能不能监听list元素的变化。
于是首先在data里定义了item_count,然后在watch属性里写了list的监听函数, 但是发现在执行list.push(1)的时候,watch下的list(){}函数里的内容并没有被执行,但发现如果vm.$data.list=[1,2,3]的话list()是会自动执行并且更新item_count的。
另一边如果去掉data下的item_count, 用computed的话,是可以监听list.push(1), splice()之类导致的array元素的改变的。
这是因为watch监听的只是变量的值吗?如果是的话有点好奇那computed是怎么实现监听list元素删减的(template有点长我省去了,我在template里面写了{{item_count}})
data: () => ({
list: [],
// item_count: 0,
}),
computed:{
item_count(){
return this.list.length
}
},
/**watch:{
list(){
console.log(this.list.length)
this.item_count = this.list.length
},
}, */
写回答
1回答
-
Dell
2021-12-26
list 你不是 reactive 数组,watch 你这么写,没法舰艇,价格 reactive([]),马上就好了
012021-12-26
相似问题