From: Evan You Date: Wed, 5 Feb 2025 06:23:32 +0000 (+0800) Subject: wip(vapor): support vapor component as root in vdom app X-Git-Tag: v3.6.0-alpha.1~16^2~90 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a770a83de6f369fd8b334dc1b7504d741001c2bf;p=thirdparty%2Fvuejs%2Fcore.git wip(vapor): support vapor component as root in vdom app --- diff --git a/packages/runtime-core/src/renderer.ts b/packages/runtime-core/src/renderer.ts index b78f789ee6..60bc81f0c3 100644 --- a/packages/runtime-core/src/renderer.ts +++ b/packages/runtime-core/src/renderer.ts @@ -1160,14 +1160,14 @@ function baseCreateRenderer( if ((n2.type as ConcreteComponent).__vapor) { if (n1 == null) { - getVaporInterface(parentComponent).mount( + getVaporInterface(parentComponent, n2).mount( n2, container, anchor, parentComponent, ) } else { - getVaporInterface(parentComponent).update( + getVaporInterface(parentComponent, n2).update( n1, n2, shouldUpdateComponent(n1, n2, optimized), @@ -2055,7 +2055,7 @@ function baseCreateRenderer( const { el, type, transition, children, shapeFlag } = vnode if (shapeFlag & ShapeFlags.COMPONENT) { if ((type as ConcreteComponent).__vapor) { - getVaporInterface(parentComponent).move(vnode, container, anchor) + getVaporInterface(parentComponent, vnode).move(vnode, container, anchor) } else { move( vnode.component!.subTree, @@ -2185,7 +2185,7 @@ function baseCreateRenderer( if (shapeFlag & ShapeFlags.COMPONENT) { if ((type as ConcreteComponent).__vapor) { - getVaporInterface(parentComponent).unmount(vnode, doRemove) + getVaporInterface(parentComponent, vnode).unmount(vnode, doRemove) } else { unmountComponent(vnode.component!, parentSuspense, doRemove) } @@ -2620,8 +2620,10 @@ export function invalidateMount(hooks: LifecycleHook | undefined): void { function getVaporInterface( instance: ComponentInternalInstance | null, + vnode: VNode, ): VaporInteropInterface { - const res = instance!.appContext.vapor + const ctx = instance ? instance.appContext : vnode.appContext + const res = ctx && ctx.vapor if (__DEV__ && !res) { warn( `Vapor component found in vdom tree but vapor-in-vdom interop was not installed. ` +