From 4de819c267794a3e57cd357f9013b10e83677982 Mon Sep 17 00:00:00 2001 From: daiwei Date: Thu, 27 Mar 2025 14:36:02 +0800 Subject: [PATCH] wip: refactor --- packages/runtime-vapor/src/component.ts | 11 +++-------- packages/runtime-vapor/src/components/Teleport.ts | 8 +++++++- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/packages/runtime-vapor/src/component.ts b/packages/runtime-vapor/src/component.ts index 0b051420a..672bb75dc 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 1e4a12f83..50ddceb62 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