diff --git a/packages/reactivity/src/effect.ts b/packages/reactivity/src/effect.ts index 5c926f7..c7f39ac 100644 --- a/packages/reactivity/src/effect.ts +++ b/packages/reactivity/src/effect.ts @@ -13,9 +13,15 @@ type KeyToDepMap = Map */ const targetMap = new WeakMap() -export function effect(fn: () => T) { +export interface ReactiveEffectOptions { + lazy?: boolean + schedler?: EffectScheduler +} +export function effect(fn: () => T, options?: ReactiveEffectOptions) { const _effect = new ReactiveEffect(fn) - _effect.run() + if (!options || !options.lazy) { + _effect.run() + } } export let activeEffect: ReactiveEffect | undefined diff --git a/packages/vue/examples/reactivity/lazy.html b/packages/vue/examples/reactivity/lazy.html new file mode 100644 index 0000000..13e5a54 --- /dev/null +++ b/packages/vue/examples/reactivity/lazy.html @@ -0,0 +1,28 @@ + + + + + Document + + + +
+ + + \ No newline at end of file