Pārlūkot izejas kodu

wip(ssr): revert reactivity ssr paths

The perf gains are not worth the correctness issues these paths may lead to
Evan You 6 gadi atpakaļ
vecāks
revīzija
763faac182

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

@@ -165,7 +165,7 @@ export const readonlyHandlers: ProxyHandler<object> = {
   }
 }
 
-// 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<object> = {

+ 0 - 4
packages/reactivity/src/computed.ts

@@ -56,10 +56,6 @@ export function computed<T>(
     // expose effect so computed can be stopped
     effect: runner,
     get value() {
-      if (__SSR__) {
-        return getter()
-      }
-
       if (dirty) {
         value = runner()
         dirty = false

+ 6 - 11
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<T extends object>(
 
 // @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<T extends object>(
   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)

+ 1 - 9
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<T extends object>(
   object: T
 ): { [K in keyof T]: Ref<T[K]> } {
-  if (__DEV__ && !__SSR__ && !isReactive(object)) {
+  if (__DEV__ && !isReactive(object)) {
     console.warn(`toRefs() expects a reactive object but received a plain one.`)
   }
   const ret: any = {}