wip: watcher cleanup improvement

This commit is contained in:
Evan You
2019-06-06 13:25:05 +08:00
parent e5e56bb358
commit 1d41771e56
3 changed files with 13 additions and 2 deletions

View File

@@ -11,6 +11,7 @@ export interface ReactiveEffect {
scheduler?: Scheduler
onTrack?: Debugger
onTrigger?: Debugger
onStop?: () => void
}
export interface ReactiveEffectOptions {
@@ -19,6 +20,7 @@ export interface ReactiveEffectOptions {
scheduler?: Scheduler
onTrack?: Debugger
onTrigger?: Debugger
onStop?: () => void
}
export type Scheduler = (run: () => any) => void
@@ -49,6 +51,7 @@ export function createReactiveEffect(
effect.scheduler = options.scheduler
effect.onTrack = options.onTrack
effect.onTrigger = options.onTrigger
effect.onStop = options.onStop
effect.computed = options.computed
effect.deps = []
return effect

View File

@@ -134,6 +134,9 @@ export function effect(
export function stop(effect: ReactiveEffect) {
if (effect.active) {
cleanup(effect)
if (effect.onStop) {
effect.onStop()
}
effect.active = false
}
}