vue watch 可以调用computed
时间: 2023-05-10 20:01:17 浏览: 285
Vue中的watch是一个监听器,用于在Vue实例中监听数据变化。与之相对的是computed,它也可以监听数据变化并进行计算,但与watch不同的是,computed返回的值是一个新的衍生值。而vue watch可以直接调用computed,实现响应式数据计算的同时,也提高了代码的复用性和代码的可读性。
使用watch调用computed有两种方式,第一种是给watch选项值设置为computed属性的名称:
```
watch: {
computedValue(newValue) {
console.log('computed value changed to:', newValue);
}
},
computed: {
computedValue() {
return this.items.filter(item => item.isChecked).length;
}
}
```
这种方式比较简单,只需要在watch选项中直接使用computed属性的名称就可以了。
第二种方式是使用深度监听:
```
watch: {
items: {
handler(newValue) {
this.computedValue = newValue.filter(item => item.isChecked).length;
},
deep: true
}
},
computed: {
computedValue: {
get() {
return this.items.filter(item => item.isChecked).length;
},
set(newValue) {
console.log('computed value set to:', newValue);
}
}
}
```
这种方式是在watch选项中使用items属性并设置深度监听,当items的值发生变化时,会调用handler函数重新计算computedValue的值。同时,在computed属性中设置get和set函数可以实现数据的双向绑定。
总之,使用vue watch调用computed可以方便地实现响应式数据计算,提高代码复用性和可读性。
阅读全文