Vue中的watch
和computed
都是用来监听数据变化的,但是它们的使用场景和实现方式略有不同。
watch
用于监听某个特定的数据变化,当被监听的数据发生变化时,会自动执行相应的回调函数。watch
的用法如下:
watch: {
myData: function(newValue, oldValue) {
// do something when myData changes
}
}
上述代码中,myData
就是被监听的数据,当它的值发生变化时,watch
会自动执行回调函数,并传入新值newValue
和旧值oldValue
。
computed
则用于计算某个值,这个值会根据其依赖的数据的变化而自动更新。与watch
不同的是,computed
返回的是一个新的值,而不是执行回调函数。computed
的用法如下:
computed: {
myComputedValue: function() {
// calculate myComputedValue based on other data
return result;
}
}
上述代码中,myComputedValue
就是计算出来的新值,它的计算是基于其他数据的,当这些数据发生变化时,computed
会自动重新计算出一个新的值,并将其返回。
需要注意的是,computed
返回的值是根据其依赖的数据变化而自动更新的,而且计算结果会被缓存,直到其依赖的数据发生变化时才会重新计算。因此,在一些需要计算结果的场景下,使用computed
比使用watch
更加方便和高效。