Bladeren bron

fix(ssr): inherit scope id on functional component during ssr

fix #5817
Evan You 4 jaren geleden
bovenliggende
commit
847d7f782b
1 gewijzigde bestanden met toevoegingen van 12 en 6 verwijderingen
  1. 12 6
      packages/server-renderer/src/render.ts

+ 12 - 6
packages/server-renderer/src/render.ts

@@ -4,6 +4,7 @@ import {
   ComponentInternalInstance,
   DirectiveBinding,
   Fragment,
+  FunctionalComponent,
   mergeProps,
   ssrUtils,
   Static,
@@ -112,12 +113,17 @@ function renderComponentSubTree(
   const comp = instance.type as Component
   const { getBuffer, push } = createBuffer()
   if (isFunction(comp)) {
-    renderVNode(
-      push,
-      (instance.subTree = renderComponentRoot(instance)),
-      instance,
-      slotScopeId
-    )
+    let root = renderComponentRoot(instance)
+    // #5817 scope ID attrs not falling through if functional component doesn't
+    // have props
+    if (!(comp as FunctionalComponent).props) {
+      for (const key in instance.attrs) {
+        if (key.startsWith(`data-v-`)) {
+          ;(root.props || (root.props = {}))[key] = ``
+        }
+      }
+    }
+    renderVNode(push, (instance.subTree = root), instance, slotScopeId)
   } else {
     if (
       (!instance.render || instance.render === NOOP) &&