From: daiwei Date: Thu, 27 Mar 2025 06:36:02 +0000 (+0800) Subject: wip: refactor X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4de819c267794a3e57cd357f9013b10e83677982;p=thirdparty%2Fvuejs%2Fcore.git wip: refactor --- diff --git a/packages/runtime-vapor/src/component.ts b/packages/runtime-vapor/src/component.ts index 0b051420a5..672bb75dc1 100644 --- a/packages/runtime-vapor/src/component.ts +++ b/packages/runtime-vapor/src/component.ts @@ -60,7 +60,7 @@ import { import { hmrReload, hmrRerender } from './hmr' import { isHydrating, locateHydrationNode } from './dom/hydration' import { insertionAnchor, insertionParent } from './insertionState' -import type { VaporTeleportImpl } from './components/Teleport' +import { isVaporTeleport } from './components/Teleport' export { currentInstance } from '@vue/runtime-dom' @@ -93,8 +93,6 @@ export interface ObjectVaporComponent name?: string vapor?: boolean - - __isTeleport?: boolean } interface SharedInternalOptions { @@ -161,11 +159,8 @@ export function createComponent( } // teleport - if (component.__isTeleport) { - const frag = (component as typeof VaporTeleportImpl).process( - rawProps!, - rawSlots!, - ) + if (isVaporTeleport(component)) { + const frag = component.process(rawProps!, rawSlots!) if (!isHydrating && _insertionParent) { insert(frag, _insertionParent, _insertionAnchor) } else { diff --git a/packages/runtime-vapor/src/components/Teleport.ts b/packages/runtime-vapor/src/components/Teleport.ts index 1e4a12f835..50ddceb62e 100644 --- a/packages/runtime-vapor/src/components/Teleport.ts +++ b/packages/runtime-vapor/src/components/Teleport.ts @@ -85,7 +85,7 @@ export const VaporTeleportImpl = { }, } -class TeleportFragment extends VaporFragment { +export class TeleportFragment extends VaporFragment { anchor: Node private targetStart?: Node @@ -242,6 +242,12 @@ export const VaporTeleport = VaporTeleportImpl as unknown as { } } +export function isVaporTeleport( + value: unknown, +): value is typeof VaporTeleportImpl { + return value === VaporTeleportImpl +} + /** * dev only * during root component HMR reload, since the old component will be unmounted