diff --git a/packages/reactivity/src/computed.ts b/packages/reactivity/src/computed.ts index f06eb0a82..9ed42716d 100644 --- a/packages/reactivity/src/computed.ts +++ b/packages/reactivity/src/computed.ts @@ -1,5 +1,5 @@ import { effect, ReactiveEffect, activeReactiveEffectStack } from './effect' -import { Ref, UnwrapNestedRefs } from './ref' +import { Ref, refSymbol, UnwrapNestedRefs } from './ref' import { isFunction } from '@vue/shared' export interface ComputedRef extends Ref { @@ -43,7 +43,7 @@ export function computed( } }) return { - _isRef: true, + _isRef: refSymbol, // expose effect so computed can be stopped effect: runner, get value() { diff --git a/packages/reactivity/src/ref.ts b/packages/reactivity/src/ref.ts index c3fc1c02f..ad39a74f0 100644 --- a/packages/reactivity/src/ref.ts +++ b/packages/reactivity/src/ref.ts @@ -3,8 +3,10 @@ import { OperationTypes } from './operations' import { isObject } from '@vue/shared' import { reactive } from './reactive' +export const refSymbol = Symbol() + export interface Ref { - _isRef: true + _isRef: symbol value: UnwrapNestedRefs } @@ -15,7 +17,7 @@ const convert = (val: any): any => (isObject(val) ? reactive(val) : val) export function ref(raw: T): Ref { raw = convert(raw) const v = { - _isRef: true, + _isRef: refSymbol, get value() { track(v, OperationTypes.GET, '') return raw @@ -29,7 +31,7 @@ export function ref(raw: T): Ref { } export function isRef(v: any): v is Ref { - return v ? v._isRef === true : false + return v ? v._isRef === refSymbol : false } export function toRefs( @@ -47,7 +49,7 @@ function toProxyRef( key: K ): Ref { const v = { - _isRef: true, + _isRef: refSymbol, get value() { return object[key] },