From: Adam Jedlička Date: Fri, 13 May 2022 07:57:10 +0000 (+0200) Subject: fix(ssr): render teleport inside async component (#5187) X-Git-Tag: v3.2.34-beta.1~15 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4d7803ed28fb67d45a83d3500f5407754e65bf64;p=thirdparty%2Fvuejs%2Fcore.git fix(ssr): render teleport inside async component (#5187) --- diff --git a/packages/server-renderer/__tests__/ssrTeleport.spec.ts b/packages/server-renderer/__tests__/ssrTeleport.spec.ts index fda9591861..f26c903584 100644 --- a/packages/server-renderer/__tests__/ssrTeleport.spec.ts +++ b/packages/server-renderer/__tests__/ssrTeleport.spec.ts @@ -117,4 +117,21 @@ describe('ssrRenderTeleport', () => { 'helloworld' ) }) + + test('teleport inside async component', async () => { + const ctx: SSRContext = {} + const asyncComponent = { + template: '
content
', + async setup() {} + } + const html = await renderToString( + h({ + template: '', + components: { asyncComponent } + }), + ctx + ) + expect(html).toBe('') + expect(ctx.teleports!['#target']).toBe(`
content
`) + }) }) diff --git a/packages/server-renderer/src/renderToString.ts b/packages/server-renderer/src/renderToString.ts index cf6e9759a3..f35ee9d62d 100644 --- a/packages/server-renderer/src/renderToString.ts +++ b/packages/server-renderer/src/renderToString.ts @@ -63,9 +63,11 @@ export async function renderToString( input.provide(ssrContextKey, context) const buffer = await renderComponentVNode(vnode) + const result = await unrollBuffer(buffer as SSRBuffer) + await resolveTeleports(context) - return unrollBuffer(buffer as SSRBuffer) + return result } async function resolveTeleports(context: SSRContext) {