]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
refactor: remove isTracking() method
authorEvan You <yyx990803@gmail.com>
Sun, 30 Jan 2022 10:52:23 +0000 (18:52 +0800)
committerEvan You <yyx990803@gmail.com>
Sun, 30 Jan 2022 10:53:43 +0000 (18:53 +0800)
packages/reactivity/src/effect.ts
packages/reactivity/src/ref.ts

index 892eef102ada40c6a9a38bce9aea8b76b668d0e4..61894ebc2ec71cedefb6dba828e39445e5b0e41c 100644 (file)
@@ -45,7 +45,7 @@ export type DebuggerEventExtraInfo = {
   oldTarget?: Map<any, any> | Set<any>
 }
 
-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(
index d9ff17ac0981bb933712098fc96d2b291a18c6ae..22dd432b9452ea39c94f56a81ed7c969c0eae967 100644 (file)
@@ -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<T> = {
 }
 
 export function trackRefValue(ref: RefBase<any>) {
-  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()))
     }
   }
 }