From 763faac18268ad98bca5e3cb36e209c03e566d45 Mon Sep 17 00:00:00 2001 From: Evan You Date: Mon, 27 Jan 2020 15:15:13 -0500 Subject: [PATCH] wip(ssr): revert reactivity ssr paths The perf gains are not worth the correctness issues these paths may lead to --- packages/reactivity/src/baseHandlers.ts | 2 +- packages/reactivity/src/computed.ts | 4 ---- packages/reactivity/src/reactive.ts | 17 ++++++----------- packages/reactivity/src/ref.ts | 10 +--------- 4 files changed, 8 insertions(+), 25 deletions(-) diff --git a/packages/reactivity/src/baseHandlers.ts b/packages/reactivity/src/baseHandlers.ts index cee658898..1b8a61150 100644 --- a/packages/reactivity/src/baseHandlers.ts +++ b/packages/reactivity/src/baseHandlers.ts @@ -165,7 +165,7 @@ export const readonlyHandlers: ProxyHandler = { } } -// props handlers are special in the sense that it should not unwrap top-level +// Props handlers are special in the sense that it should not unwrap top-level // refs (in order to allow refs to be explicitly passed down), but should // retain the reactivity of the normal readonly object. export const shallowReadonlyHandlers: ProxyHandler = { diff --git a/packages/reactivity/src/computed.ts b/packages/reactivity/src/computed.ts index 4e2df4f85..1f1d8ea43 100644 --- a/packages/reactivity/src/computed.ts +++ b/packages/reactivity/src/computed.ts @@ -56,10 +56,6 @@ export function computed( // expose effect so computed can be stopped effect: runner, get value() { - if (__SSR__) { - return getter() - } - if (dirty) { value = runner() dirty = false diff --git a/packages/reactivity/src/reactive.ts b/packages/reactivity/src/reactive.ts index 256c91e6b..971ddb674 100644 --- a/packages/reactivity/src/reactive.ts +++ b/packages/reactivity/src/reactive.ts @@ -1,4 +1,4 @@ -import { isObject, toRawType, EMPTY_OBJ } from '@vue/shared' +import { isObject, toRawType } from '@vue/shared' import { mutableHandlers, readonlyHandlers, @@ -77,7 +77,8 @@ export function readonly( // @internal // Return a reactive-copy of the original object, where only the root level -// properties are readonly, and does not recursively convert returned properties. +// properties are readonly, and does NOT unwrap refs nor recursively convert +// returned properties. // This is used for creating the props proxy object for stateful components. export function shallowReadonly( target: T @@ -117,15 +118,9 @@ function createReactiveObject( if (!canObserve(target)) { return target } - const handlers = __SSR__ - ? // disable reactivity in SSR. - // NOTE: a potential caveat here is isReactive check may return different - // values on nested values on client/server. This should be very rare but - // we should keep an eye on this. - EMPTY_OBJ - : collectionTypes.has(target.constructor) - ? collectionHandlers - : baseHandlers + const handlers = collectionTypes.has(target.constructor) + ? collectionHandlers + : baseHandlers observed = new Proxy(target, handlers) toProxy.set(target, observed) toRaw.set(observed, target) diff --git a/packages/reactivity/src/ref.ts b/packages/reactivity/src/ref.ts index 6b316588b..65e1b8dd0 100644 --- a/packages/reactivity/src/ref.ts +++ b/packages/reactivity/src/ref.ts @@ -36,14 +36,6 @@ export function ref(value?: unknown) { return value } value = convert(value) - - if (__SSR__) { - return { - _isRef: true, - value - } - } - const r = { _isRef: true, get value() { @@ -66,7 +58,7 @@ export function ref(value?: unknown) { export function toRefs( object: T ): { [K in keyof T]: Ref } { - if (__DEV__ && !__SSR__ && !isReactive(object)) { + if (__DEV__ && !isReactive(object)) { console.warn(`toRefs() expects a reactive object but received a plain one.`) } const ret: any = {}