petite-vue源码逐行解析:effect函数在@vue-reactivity中的奥秘是什么?

2026-05-19 14:530阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计5569个文字,预计阅读时间需要23分钟。

petite-vue源码逐行解析:effect函数在@vue-reactivity中的奥秘是什么?

当通过`effect`将副函数应用于响应上下文注册后,副作用函数在访问响应式对象时将自动收集依赖。并在相关的响应式属性发生变化后,自动触发副作用函数的执行。`// .effect.tsexpo`

当我们通过effect将副函数向响应上下文注册后,副作用函数内访问响应式对象时即会自动收集依赖,并在相应的响应式属性发生变化后,自动触发副作用函数的执行。

// ./effect.ts export funciton effect<T = any>( fn: () => T, options?: ReactiveEffectOptions ): ReactiveEffectRunner { if ((fn as ReactiveEffectRunner).effect) { fn = (fn as ReactiveEffectRunner).effect.fn } const _effect = new ReactiveEffect(fn) if (options) { extend(_effect, options) if (options.scope) recordEffectScope(_effect, options.scope) } // 默认是马上执行副作用函数收集依赖,但可通过lazy属性延迟副作用函数的执行,延迟依赖收集。

阅读全文

本文共计5569个文字,预计阅读时间需要23分钟。

petite-vue源码逐行解析:effect函数在@vue-reactivity中的奥秘是什么?

当通过`effect`将副函数应用于响应上下文注册后,副作用函数在访问响应式对象时将自动收集依赖。并在相关的响应式属性发生变化后,自动触发副作用函数的执行。`// .effect.tsexpo`

当我们通过effect将副函数向响应上下文注册后,副作用函数内访问响应式对象时即会自动收集依赖,并在相应的响应式属性发生变化后,自动触发副作用函数的执行。

// ./effect.ts export funciton effect<T = any>( fn: () => T, options?: ReactiveEffectOptions ): ReactiveEffectRunner { if ((fn as ReactiveEffectRunner).effect) { fn = (fn as ReactiveEffectRunner).effect.fn } const _effect = new ReactiveEffect(fn) if (options) { extend(_effect, options) if (options.scope) recordEffectScope(_effect, options.scope) } // 默认是马上执行副作用函数收集依赖,但可通过lazy属性延迟副作用函数的执行,延迟依赖收集。

阅读全文