@purevue/reactivity
Version:
## 📖 Introduction
50 lines • 1.84 kB
TypeScript
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