watch时value的数据

前置知识

1.watch检测的时候,不能检测一个具体的值,而应该是一个结构。故对于监测sum,不能是watch(sum.value,…)而应该是watch(sum,…),即监测的是sum的RefImpl结构

2.而对于监测person这样的对象,用ref函数修饰person(即ref(person)),在person的RefImpl中,value保存的是person的地址值。如果只写做watch(person,…)的话,person的内容改变但地址不变是监测不到的。但如果写成watch(person.value,…),则相当于监测reactive修饰的person,默认开启深度监视,就可以监测到person内容的改变了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
let sum=ref(0)
let person=ref({
name:"张三",
age:18,
job:{
j1:{
salary:20
}
}
})


watch(sum,(newValue,oldValue)=>{
console.log('sum变了',newValue,oldValue)
},{immediate:true})



watch(person.value,(newValue,oldValue)=>{
console.log(newValue,oldValue)
})