watch监听computed数据变动
时间: 2024-09-11 18:10:37 浏览: 62
vue中watch和computed为什么能监听到数据的改变以及不同之处
在Vue.js等前端框架中,`computed`属性是一种基于其依赖进行缓存的特殊属性。这意味着只有在依赖改变时,`computed`属性才会重新计算其值。而`watch`则是一种观察和响应Vue实例上的数据变动的方法。
`watch`监听`computed`数据变动通常用于当你需要在数据变化时执行异步或开销较大的操作,或者需要根据多个数据的变化来执行一个动作时。虽然`computed`属性本身就支持依赖追踪,但`watch`可以提供更加灵活的处理方式,特别是在需要在数据变化后进行更复杂的操作时。
使用`watch`来监听`computed`属性时,你需要定义一个`watch`对象,在该对象中指定要监听的`computed`属性名称,并提供一个回调函数,该回调函数会在监听的`computed`属性变化时被调用。
以下是一个简单的例子:
```javascript
const app = new Vue({
el: '#app',
data: {
message: 'Hello Vue!'
},
computed: {
reverseMessage: function () {
return this.message.split('').reverse().join('');
}
},
watch: {
// 监听 computed 属性 'reverseMessage' 的变化
reverseMessage: function (newValue, oldValue) {
console.log('reverseMessage changed from ' + oldValue + ' to ' + newValue);
}
}
});
```
在上述代码中,我们定义了一个计算属性`reverseMessage`,该属性会根据`message`的变化重新计算。然后我们通过`watch`对象中的`reverseMessage`属性来监听其变化,当`reverseMessage`的值发生变化时,`watch`回调函数会被执行,并可以获取到新旧值。
阅读全文