ソースを参照

refactor(reactivity): change _isRef to use refSymbol as key (#124)

Carlos Rodrigues 6 年 前
コミット
8d70093802
2 ファイル変更6 行追加7 行削除
  1. 1 1
      packages/reactivity/src/computed.ts
  2. 5 6
      packages/reactivity/src/ref.ts

+ 1 - 1
packages/reactivity/src/computed.ts

@@ -45,7 +45,7 @@ export function computed<T>(
     }
   })
   return {
-    _isRef: refSymbol,
+    [refSymbol]: true,
     // expose effect so computed can be stopped
     effect: runner,
     get value() {

+ 5 - 6
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<T> {
-  _isRef: RefSymbol
+  [refSymbol]: true
   value: UnwrapNestedRefs<T>
 }
 
@@ -18,7 +17,7 @@ const convert = (val: any): any => (isObject(val) ? reactive(val) : val)
 export function ref<T>(raw: T): Ref<T> {
   raw = convert(raw)
   const v = {
-    _isRef: refSymbol,
+    [refSymbol]: true,
     get value() {
       track(v, OperationTypes.GET, '')
       return raw
@@ -32,7 +31,7 @@ export function ref<T>(raw: T): Ref<T> {
 }
 
 export function isRef(v: any): v is Ref<any> {
-  return v ? v._isRef === refSymbol : false
+  return v ? v[refSymbol] === true : false
 }
 
 export function toRefs<T extends object>(
@@ -50,7 +49,7 @@ function toProxyRef<T extends object, K extends keyof T>(
   key: K
 ): Ref<T[K]> {
   const v = {
-    _isRef: refSymbol,
+    [refSymbol]: true,
     get value() {
       return object[key]
     },