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