const { props, children } = instance.vnode
const isStateful = isStatefulComponent(instance)
initProps(instance, props, isStateful, isSSR)
- initSlots(instance, children, optimized)
+ initSlots(instance, children, optimized || isSSR)
const setupResult = isStateful
? setupStatefulComponent(instance, isSSR)
-import { createApp } from 'vue'
+import { createApp, defineAsyncComponent, h } from 'vue'
import { renderToString } from '../src/renderToString'
const components = {
).toBe(`<div><p>1</p><p>2</p></div>`)
})
+ // #12438
+ test('async component slot with v-if true', async () => {
+ const Layout = defineAsyncComponent(() =>
+ Promise.resolve({
+ template: `<div><slot name="header">default header</slot></div>`,
+ }),
+ )
+ const LayoutLoader = {
+ setup(_: any, context: any) {
+ return () => h(Layout, {}, context.slots)
+ },
+ }
+ expect(
+ await renderToString(
+ createApp({
+ components: {
+ LayoutLoader,
+ },
+ template: `
+ <Suspense>
+ <LayoutLoader>
+ <template v-if="true" #header>
+ new header
+ </template>
+ </LayoutLoader>
+ </Suspense>
+ `,
+ }),
+ ),
+ ).toBe(`<div><!--[--> new header <!--]--></div>`)
+ })
+
// #11326
test('dynamic component slot', async () => {
expect(