fix(reactivity): effect shoud only recursively self trigger with explicit options

fix #2125
This commit is contained in:
Evan You
2020-09-16 10:52:31 -04:00
parent 89e9ab8a2a
commit 3810de7d6b
4 changed files with 57 additions and 6 deletions

View File

@@ -25,6 +25,7 @@ export interface ReactiveEffectOptions {
onTrack?: (event: DebuggerEvent) => void
onTrigger?: (event: DebuggerEvent) => void
onStop?: () => void
allowRecurse?: boolean
}
export type DebuggerEvent = {
@@ -178,7 +179,11 @@ export function trigger(
const effects = new Set<ReactiveEffect>()
const add = (effectsToAdd: Set<ReactiveEffect> | undefined) => {
if (effectsToAdd) {
effectsToAdd.forEach(effect => effects.add(effect))
effectsToAdd.forEach(effect => {
if (effect !== activeEffect || effect.options.allowRecurse) {
effects.add(effect)
}
})
}
}