UNPKG

@purevue/reactivity

Version:

## 📖 Introduction

50 lines 1.84 kB
import type { Dep } from '../dep'; import { EffectFlags } from './effectFlags'; /** 当前活跃的副作用 */ export declare let activeEffect: ReactiveEffect | null; /** * 是否应该收集依赖 * 某些阶段需暂停收集依赖,如:执行 setup 函数 */ export declare let shouldTrack: boolean; export declare function pauseTracking(): void; export declare function enableTracking(): void; export declare function resetTracking(): void; /** * Vue 响应式系统中的“观察者”(Observer) * - 通过 fn 表示副作用逻辑 * - 依赖响应式数据,当数据变化时被重新调度执行 */ export declare class ReactiveEffect<T = any> { fn: () => T; /** 记录当前这个 effect 被哪些响应式属性的 dep(依赖集合)引用了,用于在 stop() 或更新时清理依赖关系 */ deps: Dep[]; /** 位标志,用于表示 effect 的状态、行为和生命周期 */ flags: EffectFlags; /** effect 的“更新调度器”。如果有,它接管 effect 的执行逻辑;如果没有,effect 默认立即运行。 */ scheduler?: (...args: any[]) => any; constructor(fn: () => T); /** * 执行副作用函数并收集依赖 * - 如果已经 stop,则只执行 fn,不进行依赖收集 * - 如果仍处于 active 状态,则: * 1. 清理旧依赖 * 2. 切换 activeEffect * 3. 执行 fn(触发响应式读取,从而建立新的依赖关系) * 4. 恢复 activeEffect */ run(): T; /** * 停止 effect,使其不再收集依赖并参与更新 */ stop(): void; /** * 触发副作用函数的重新执行 */ trigger(): void; /** * 响应式依赖通知时调用(批处理队列) */ notify(): void; } //# sourceMappingURL=ReactiveEffect.d.ts.map