From caad39c3536127793ea9bc1c75eb5bf5c2b8ff21 Mon Sep 17 00:00:00 2001 From: Evan You Date: Thu, 30 May 2019 21:31:53 +0800 Subject: [PATCH] refactor: tweak watch getter logic --- packages/runtime-core/src/reactivity.ts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/runtime-core/src/reactivity.ts b/packages/runtime-core/src/reactivity.ts index fa102b2f1c..30976be5c0 100644 --- a/packages/runtime-core/src/reactivity.ts +++ b/packages/runtime-core/src/reactivity.ts @@ -33,6 +33,8 @@ import { currentInstance } from './component' import { queueJob, queuePostFlushCb } from './scheduler' import { EMPTY_OBJ, isObject, isArray } from '@vue/shared' +// record effects created during a component's setup() so that they can be +// stopped when the component unmounts function recordEffect(effect: ReactiveEffect) { if (currentInstance) { ;(currentInstance.effects || (currentInstance.effects = [])).push(effect) @@ -71,11 +73,8 @@ export function watch( ? queueJob : queuePostFlushCb - const traverseIfDeep = (getter: Function) => - options.deep ? () => traverse(getter()) : getter - const getter = isValue(source) - ? traverseIfDeep(() => source.value) - : traverseIfDeep(source) + const baseGetter = isValue(source) ? () => source.value : source + const getter = options.deep ? () => traverse(baseGetter()) : baseGetter let oldValue: any const applyCb = cb -- 2.47.3