Watch在一开始初始化的时候,会读取一次监听的数据的值。于是,这个值就收集到了Watch的watcher。而我们给Watch设置的handler,Watch会放入watcher中。当数据改变时,通知Watch的watcher进行更新,也是handler
就被调用了。
如果我们设置了immediate: true
,就不需要在数据变化时才触发,而是完成初始化之后,就立即执行一次handler。
如果我们设置了deep: true
,如果被监听的值是对象,Vue会进行深度遍历。这个对象之下的每一个属性都会收集到这个Watch的watcher,当这个对象任意一个属性发生变化时,该Watch的handler
就会被调用。
data() {
return {
a: {
b: {
c: 123
}
}
}
}
比如我们坚挺了以上data
中的a属性,那么a, b, c
都会收集到这个Watch的watcher,当这3个任意一个发生变化是,Watch的handler就会被调用。