effect
方法主要用于处理函数的响应式,可用于计算属性和watchEffect等功能,通过触发函数中响应式变量的proxy
的get
方法实现将自身加入到proxy
的deps
中,实现与proxy
关联,也可以将其他依赖收集到自己的deps中
1. effect
创建一个effect函数,如果不是lazy创建时会先调用一遍,这样可以调用相关get并将effect加入相关proxy的deps中
function effect<T = any>(
fn: () => T,
options: ReactiveEffectOptions = EMPTY_OBJ
): ReactiveEffect<T> {
if (isEffect(fn)) {
// 如果已经是effect则将原函数取出来
fn = fn.raw
}
const effect = createReactiveEffect(fn, options)
if (!options.lazy) {
// 如果不是lazy则先调用一遍effect,这个时候可以触发相关proxy的get
effect()
}
return effect
}
2. createReactiveEffect
当调用effect
时会创建一个