除了$watch 还有什么可以监听
时间: 2023-09-03 13:07:26 浏览: 83
详解vue2 $watch要注意的问题
除了使用`$watch`来监听Vue实例的数据变化,还有以下几种方式可以监听数据的变化:
1. 计算属性(Computed):计算属性的值可以根据其他数据的变化而变化,它们会缓存计算结果,只有在相关数据变化时才会重新计算。因此,可以通过计算属性来监听数据的变化。例如:
```javascript
export default {
data() {
return {
firstName: 'John',
lastName: 'Doe',
}
},
computed: {
fullName() {
return `${this.firstName} ${this.lastName}`;
}
},
created() {
this.$watch('fullName', (newValue, oldValue) => {
console.log('fullName has changed');
});
}
}
```
2. 监听器(Watcher):监听器可以监听数据的变化,并在变化时执行相应的回调函数。与`$watch`不同的是,监听器可以监听多个数据的变化,并且可以在数据变化时执行复杂的逻辑。例如:
```javascript
export default {
data() {
return {
firstName: 'John',
lastName: 'Doe',
}
},
watch: {
firstName(newValue, oldValue) {
console.log('firstName has changed');
},
lastName(newValue, oldValue) {
console.log('lastName has changed');
}
}
}
```
3. 侦听器($watch):在Vue.js 2.x版本中,除了使用`$watch`来监听数据的变化外,还可以使用`$watch`的替代方案——侦听器。侦听器可以监听数据的变化,并在变化时执行相应的回调函数。与`$watch`不同的是,侦听器可以监听多个数据的变化,并且可以在数据变化时执行复杂的逻辑。例如:
```javascript
export default {
data() {
return {
firstName: 'John',
lastName: 'Doe',
}
},
created() {
this.$watch(
() => [this.firstName, this.lastName],
([newFirstName, newLastName], [oldFirstName, oldLastName]) => {
console.log('fullName has changed');
}
);
}
}
```
综上所述,除了`$watch`之外,Vue.js还提供了多种监听数据变化的方式,可以根据具体的情况选择合适的方式来监听数据的变化。
阅读全文