diff --git a/packages/runtime-vapor/__tests__/component.spec.ts b/packages/runtime-vapor/__tests__/component.spec.ts
index 5fdff8eaf..22294b1e7 100644
--- a/packages/runtime-vapor/__tests__/component.spec.ts
+++ b/packages/runtime-vapor/__tests__/component.spec.ts
@@ -2,6 +2,7 @@ import {
type Ref,
inject,
nextTick,
+ onMounted,
onUpdated,
provide,
ref,
@@ -13,6 +14,7 @@ import {
createIf,
createTextNode,
renderEffect,
+ setInsertionState,
template,
} from '../src'
import { makeRender } from './_utils'
@@ -266,6 +268,29 @@ describe('component', () => {
expect(spy).toHaveBeenCalledTimes(2)
})
+ it('properly mount child component when using setInsertionState', async () => {
+ const spy = vi.fn()
+
+ const { component: Comp } = define({
+ setup() {
+ onMounted(spy)
+ return template('
hi
')()
+ },
+ })
+
+ const { host } = define({
+ setup() {
+ const n2 = template('', true)()
+ setInsertionState(n2 as any)
+ createComponent(Comp)
+ return n2
+ },
+ }).render()
+
+ expect(host.innerHTML).toBe('hi
')
+ expect(spy).toHaveBeenCalledTimes(1)
+ })
+
it('unmount component', async () => {
const { host, app, instance } = define(() => {
const count = ref(0)
diff --git a/packages/runtime-vapor/src/component.ts b/packages/runtime-vapor/src/component.ts
index c6602ec96..deec96cb0 100644
--- a/packages/runtime-vapor/src/component.ts
+++ b/packages/runtime-vapor/src/component.ts
@@ -276,7 +276,7 @@ export function createComponent(
onScopeDispose(() => unmountComponent(instance), true)
if (!isHydrating && _insertionParent) {
- insert(instance.block, _insertionParent, _insertionAnchor)
+ mountComponent(instance, _insertionParent, _insertionAnchor)
}
return instance