认识
2024年03月18日
一、认识
Vue.js 3.0
中, watch
用于监测响应式数据, 当数据发生变化时, 通知并执行相应的回调函数。watch
传入的第一个参数为要监测的响应式数据, 读取数据并包装成一个副作用函数,创建一个带有 scheduler
的 effect
。当响应式数据发生变化时, 由于有 scheduler
, 会触发 scheduler
调度函数执行,而不是直接触发副作用函数执行。在 scheduler
调度函数中, 执行 watch
传入的回调。watch
机制如下所示:
function watch(source,cb,options = {}){
effect(
()=> source, // 读取响应式数据, 触发响应式数据的 `get`, 建立联系
{
scheduler(){
cb(); // 当响应式数据发生变化时, 调用回调函数 cb
}
}
)
}
二、变量细节
2.1 getter
2.2 cleanup
watch
提供清除过期副作用的能力, 这个能力的实现通过 cleanup