From a51f935b72c7467e234221b6e1559b18f1cb8ceb Mon Sep 17 00:00:00 2001 From: Evan You Date: Sun, 30 Jan 2022 18:52:23 +0800 Subject: [PATCH] refactor: remove isTracking() method --- packages/reactivity/src/effect.ts | 37 +++++++++++++------------------ packages/reactivity/src/ref.ts | 16 +++++++------ 2 files changed, 25 insertions(+), 28 deletions(-) diff --git a/packages/reactivity/src/effect.ts b/packages/reactivity/src/effect.ts index 892eef102ad..61894ebc2ec 100644 --- a/packages/reactivity/src/effect.ts +++ b/packages/reactivity/src/effect.ts @@ -45,7 +45,7 @@ export type DebuggerEventExtraInfo = { oldTarget?: Map | Set } -let activeEffect: ReactiveEffect | undefined +export let activeEffect: ReactiveEffect | undefined export const ITERATE_KEY = Symbol(__DEV__ ? 'iterate' : '') export const MAP_KEY_ITERATE_KEY = Symbol(__DEV__ ? 'Map key iterate' : '') @@ -181,7 +181,7 @@ export function stop(runner: ReactiveEffectRunner) { runner.effect.stop() } -let shouldTrack = true +export let shouldTrack = true const trackStack: boolean[] = [] export function pauseTracking() { @@ -200,27 +200,22 @@ export function resetTracking() { } export function track(target: object, type: TrackOpTypes, key: unknown) { - if (!isTracking()) { - return - } - let depsMap = targetMap.get(target) - if (!depsMap) { - targetMap.set(target, (depsMap = new Map())) - } - let dep = depsMap.get(key) - if (!dep) { - depsMap.set(key, (dep = createDep())) - } - - const eventInfo = __DEV__ - ? { effect: activeEffect, target, type, key } - : undefined + if (shouldTrack && activeEffect) { + let depsMap = targetMap.get(target) + if (!depsMap) { + targetMap.set(target, (depsMap = new Map())) + } + let dep = depsMap.get(key) + if (!dep) { + depsMap.set(key, (dep = createDep())) + } - trackEffects(dep, eventInfo) -} + const eventInfo = __DEV__ + ? { effect: activeEffect, target, type, key } + : undefined -export function isTracking() { - return shouldTrack && !!activeEffect + trackEffects(dep, eventInfo) + } } export function trackEffects( diff --git a/packages/reactivity/src/ref.ts b/packages/reactivity/src/ref.ts index d9ff17ac098..22dd432b945 100644 --- a/packages/reactivity/src/ref.ts +++ b/packages/reactivity/src/ref.ts @@ -1,4 +1,9 @@ -import { isTracking, trackEffects, triggerEffects } from './effect' +import { + activeEffect, + shouldTrack, + trackEffects, + triggerEffects +} from './effect' import { TrackOpTypes, TriggerOpTypes } from './operations' import { isArray, hasChanged, IfAny } from '@vue/shared' import { isProxy, toRaw, isReactive, toReactive } from './reactive' @@ -24,19 +29,16 @@ type RefBase = { } export function trackRefValue(ref: RefBase) { - if (isTracking()) { + if (shouldTrack && activeEffect) { ref = toRaw(ref) - if (!ref.dep) { - ref.dep = createDep() - } if (__DEV__) { - trackEffects(ref.dep, { + trackEffects(ref.dep || (ref.dep = createDep()), { target: ref, type: TrackOpTypes.GET, key: 'value' }) } else { - trackEffects(ref.dep) + trackEffects(ref.dep || (ref.dep = createDep())) } } }