diff --git a/packages/reactivity/__tests__/ref.spec.ts b/packages/reactivity/__tests__/ref.spec.ts index 899cf103..dd04ac6a 100644 --- a/packages/reactivity/__tests__/ref.spec.ts +++ b/packages/reactivity/__tests__/ref.spec.ts @@ -78,6 +78,7 @@ describe('reactivity/ref', () => { expect(isRef(computed(() => 1))).toBe(true) expect(isRef(0)).toBe(false) + expect(isRef(1)).toBe(false) // an object that looks like a ref isn't necessarily a ref expect(isRef({ value: 0 })).toBe(false) }) diff --git a/packages/reactivity/src/effect.ts b/packages/reactivity/src/effect.ts index 5284825c..a147e613 100644 --- a/packages/reactivity/src/effect.ts +++ b/packages/reactivity/src/effect.ts @@ -131,7 +131,7 @@ export function track( targetMap.set(target, (depsMap = new Map())) } let dep = depsMap.get(key!) - if (!dep) { + if (dep === void 0) { depsMap.set(key!, (dep = new Set())) } if (!dep.has(effect)) { diff --git a/packages/reactivity/src/ref.ts b/packages/reactivity/src/ref.ts index ad39a74f..ff25d371 100644 --- a/packages/reactivity/src/ref.ts +++ b/packages/reactivity/src/ref.ts @@ -4,9 +4,10 @@ import { isObject } from '@vue/shared' import { reactive } from './reactive' export const refSymbol = Symbol() +export type RefSymbol = typeof refSymbol export interface Ref { - _isRef: symbol + _isRef: RefSymbol value: UnwrapNestedRefs }