Jelajahi Sumber

fix(ssr): hydration `__vnode` missing for devtools (#9328)

Anthony Fu 2 tahun lalu
induk
melakukan
5156ac5b38
1 mengubah file dengan 15 tambahan dan 0 penghapusan
  1. 15 0
      packages/runtime-core/src/hydration.ts

+ 15 - 0
packages/runtime-core/src/hydration.ts

@@ -111,6 +111,21 @@ export function createHydrationFunctions(
     let domType = node.nodeType
     vnode.el = node
 
+    if (__DEV__ || __FEATURE_PROD_DEVTOOLS__) {
+      if (!('__vnode' in node)) {
+        Object.defineProperty(node, '__vnode', {
+          value: vnode,
+          enumerable: false
+        })
+      }
+      if (!('__vueParentComponent' in node)) {
+        Object.defineProperty(node, '__vueParentComponent', {
+          value: parentComponent,
+          enumerable: false
+        })
+      }
+    }
+
     if (patchFlag === PatchFlags.BAIL) {
       optimized = false
       vnode.dynamicChildren = null