在Vue 3中,watch
仍然是一个用于观察和响应Vue实例上的数据变化的选项。watch
选项接受一个对象,该对象中的属性对应要观察的数据属性,并指定对应的回调函数,用于处理数据变化时的逻辑。
watch
选项的语法如下:
watch: {
// 观察data中的a属性
a: {
immediate: true, // 立即执行回调函数
handler(newVal, oldVal) {
// 回调函数逻辑
},
deep: true // 深度观察嵌套属性变化
}
}
在watch
对象中,每个属性表示一个要观察的数据属性,可以指定immediate
和handler
属性。
immediate
:默认为false
。如果设置为true
,则当组件创建时立即执行回调函数。handler
:指定处理函数,当对应的数据属性发生变化时触发该函数。回调函数的参数为新的值和旧的值。deep
:默认为false
。如果设置为true
,则表示深度观察嵌套属性变化。当数据属性的值发生变化时,会递归地触发回调函数。
以下是一个示例,演示了如何使用watch
来观察和响应数据变化:
import { ref, watch } from 'vue';
export default {
setup() {
const count = ref(0);
const increment = () => {
count.value++;
};
watch(count, (newVal, oldVal) => {
console.log(`count changed from ${oldVal} to ${newVal}`);
});
return { count, increment };
}
};
在上面的示例中,我们使用ref
创建了一个名为count
的响应式引用,并使用watch
观察了它的变化。当count
的值发生变化时,回调函数会被触发,并在控制台输出变化前后的值。