From: Evan You Date: Mon, 27 Jan 2020 20:15:13 +0000 (-0500) Subject: wip(ssr): revert reactivity ssr paths X-Git-Tag: v3.0.0-alpha.4~3 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=763faac18268ad98bca5e3cb36e209c03e566d45;p=thirdparty%2Fvuejs%2Fcore.git wip(ssr): revert reactivity ssr paths The perf gains are not worth the correctness issues these paths may lead to --- diff --git a/packages/reactivity/src/baseHandlers.ts b/packages/reactivity/src/baseHandlers.ts index cee6588988..1b8a61150f 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 4e2df4f85c..1f1d8ea43d 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 256c91e6b4..971ddb6743 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 6b316588bc..65e1b8dd01 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 = {}