]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
feat(reactivity): use Symbol for Ref._isRef (#114)
author扩散性百万甜面包 <himself65@outlook.com>
Sat, 5 Oct 2019 19:46:36 +0000 (03:46 +0800)
committerEvan You <yyx990803@gmail.com>
Sat, 5 Oct 2019 19:46:36 +0000 (15:46 -0400)
packages/reactivity/src/computed.ts
packages/reactivity/src/ref.ts

index f06eb0a82b4f0a13236ba03b2c1de4d327418645..9ed42716dae45d5450c057b746894891f1f87801 100644 (file)
@@ -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<T> extends Ref<T> {
@@ -43,7 +43,7 @@ export function computed<T>(
     }
   })
   return {
-    _isRef: true,
+    _isRef: refSymbol,
     // expose effect so computed can be stopped
     effect: runner,
     get value() {
index c3fc1c02fd168014a45e7abab8dc11937bc62971..ad39a74f0f92e63574fb3221ce8379f6b34734f7 100644 (file)
@@ -3,8 +3,10 @@ import { OperationTypes } from './operations'
 import { isObject } from '@vue/shared'
 import { reactive } from './reactive'
 
+export const refSymbol = Symbol()
+
 export interface Ref<T> {
-  _isRef: true
+  _isRef: symbol
   value: UnwrapNestedRefs<T>
 }
 
@@ -15,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: true,
+    _isRef: refSymbol,
     get value() {
       track(v, OperationTypes.GET, '')
       return raw
@@ -29,7 +31,7 @@ export function ref<T>(raw: T): Ref<T> {
 }
 
 export function isRef(v: any): v is Ref<any> {
-  return v ? v._isRef === true : false
+  return v ? v._isRef === refSymbol : false
 }
 
 export function toRefs<T extends object>(
@@ -47,7 +49,7 @@ function toProxyRef<T extends object, K extends keyof T>(
   key: K
 ): Ref<T[K]> {
   const v = {
-    _isRef: true,
+    _isRef: refSymbol,
     get value() {
       return object[key]
     },