Skip to content

Commit

Permalink
refactor: remove isTracking() method
Browse files Browse the repository at this point in the history
  • Loading branch information
yyx990803 committed Jan 30, 2022
1 parent bb43704 commit a51f935
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 28 deletions.
37 changes: 16 additions & 21 deletions packages/reactivity/src/effect.ts
Expand Up @@ -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' : '')
Expand Down Expand Up @@ -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() {
Expand All @@ -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(
Expand Down
16 changes: 9 additions & 7 deletions 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'
Expand All @@ -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()))
}
}
}
Expand Down

0 comments on commit a51f935

Please sign in to comment.