From 8d70093802f2ed538844a13b3ed4a5b6020b509b Mon Sep 17 00:00:00 2001 From: Carlos Rodrigues Date: Sun, 6 Oct 2019 16:46:09 +0100 Subject: [PATCH] refactor(reactivity): change _isRef to use refSymbol as key (#124) --- packages/reactivity/src/computed.ts | 2 +- packages/reactivity/src/ref.ts | 11 +++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/packages/reactivity/src/computed.ts b/packages/reactivity/src/computed.ts index c22a33e4b..4e11b7c75 100644 --- a/packages/reactivity/src/computed.ts +++ b/packages/reactivity/src/computed.ts @@ -45,7 +45,7 @@ export function computed( } }) return { - _isRef: refSymbol, + [refSymbol]: true, // 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 ff25d371d..b0de05863 100644 --- a/packages/reactivity/src/ref.ts +++ b/packages/reactivity/src/ref.ts @@ -3,11 +3,10 @@ import { OperationTypes } from './operations' import { isObject } from '@vue/shared' import { reactive } from './reactive' -export const refSymbol = Symbol() -export type RefSymbol = typeof refSymbol +export const refSymbol = Symbol(__DEV__ ? 'refSymbol' : undefined) export interface Ref { - _isRef: RefSymbol + [refSymbol]: true value: UnwrapNestedRefs } @@ -18,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: refSymbol, + [refSymbol]: true, get value() { track(v, OperationTypes.GET, '') return raw @@ -32,7 +31,7 @@ export function ref(raw: T): Ref { } export function isRef(v: any): v is Ref { - return v ? v._isRef === refSymbol : false + return v ? v[refSymbol] === true : false } export function toRefs( @@ -50,7 +49,7 @@ function toProxyRef( key: K ): Ref { const v = { - _isRef: refSymbol, + [refSymbol]: true, get value() { return object[key] },