监视基本类型
const x = ref(0);
const y = ref(0);
watch(x, (newVal, oldVal)=>{
console.log("newVal", newVal);
console.log("oldVal", oldVal);
},{
immediate:true
})
watch(()=>x.value, (newVal, oldVal)=>{
console.log("newVal", newVal);
console.log("oldVal", oldVal);
})
watch([x, y], (newVal, oldVal)=>{
console.log("newVal", newVal);
console.log("oldVal", oldVal);
})
watch([()=>x.value, ()=>y.value], (newVal, oldVal)=>{
console.log("newVal", newVal);
console.log("oldVal", oldVal);
})
监视引用类型
const obj = reactive({
count:0,
deepObj:{
a:0
}
})
watch(obj, (newVal, oldVal)=>{
console.log("newVal", newVal);
console.log("oldVal", oldVal);
})
watch(()=>obj.count, (newVal, oldVal)=>{
console.log("newVal", newVal);
console.log("oldVal", oldVal);
})
watch(()=>obj.deepObj, (newVal, oldVal)=>{
console.log("newVal", newVal);
console.log("oldVal", oldVal);
},{
deep:true
})
watchEffect
const num = ref(0);
watchEffect(()=>{
console.log(num.value);
})
const unwatch = watchEffect(() => {
console.log(num.value);
})
unwatch();