diff --git a/packages/server-renderer/src/helpers/ssrRenderComponent.ts b/packages/server-renderer/src/helpers/ssrRenderComponent.ts index 4709f23a674..35ae409f0b2 100644 --- a/packages/server-renderer/src/helpers/ssrRenderComponent.ts +++ b/packages/server-renderer/src/helpers/ssrRenderComponent.ts @@ -1,3 +1,4 @@ +import { isFunction } from '@vue/shared' import { Component, ComponentInternalInstance, createVNode, Slots } from 'vue' import { Props, renderComponentVNode, SSRBuffer } from '../render' import { SSRSlots } from './ssrRenderSlot' @@ -10,7 +11,9 @@ export function ssrRenderComponent( slotScopeId?: string ): SSRBuffer | Promise { return renderComponentVNode( - createVNode(comp, props, children), + isFunction(comp) && parentComponent + ? (parentComponent.subTree = createVNode(comp, props, children)) + : createVNode(comp, props, children), parentComponent, slotScopeId )