From fb920ac57eb785c033e47862dc559fb9f238796f Mon Sep 17 00:00:00 2001 From: daiwei Date: Wed, 15 Oct 2025 10:38:26 +0800 Subject: [PATCH] fix(defineVaporAsyncComponent): remove SSR related code --- .../runtime-core/src/apiAsyncComponent.ts | 41 +++++++------------ packages/runtime-core/src/index.ts | 2 - .../runtime-vapor/__tests__/hydration.spec.ts | 17 ++++---- .../src/apiDefineAsyncComponent.ts | 18 -------- 4 files changed, 24 insertions(+), 54 deletions(-) diff --git a/packages/runtime-core/src/apiAsyncComponent.ts b/packages/runtime-core/src/apiAsyncComponent.ts index 53d0e4ad3f..67c8dcfdfa 100644 --- a/packages/runtime-core/src/apiAsyncComponent.ts +++ b/packages/runtime-core/src/apiAsyncComponent.ts @@ -108,7 +108,19 @@ export function defineAsyncComponent< (__FEATURE_SUSPENSE__ && suspensible && instance.suspense) || (__SSR__ && isInSSRComponentSetup) ) { - return loadInnerComponent(instance, load, onError, errorComponent) + return load() + .then(comp => { + return () => createInnerComp(comp, instance) + }) + .catch(err => { + onError(err) + return () => + errorComponent + ? createVNode(errorComponent as ConcreteComponent, { + error: err, + }) + : null + }) } const { loaded, error, delayed } = useAsyncComponentState( @@ -151,7 +163,7 @@ export function defineAsyncComponent< }) as T } -export function createInnerComp( +function createInnerComp( comp: ConcreteComponent, parent: ComponentInternalInstance, ): VNode { @@ -278,31 +290,6 @@ export const useAsyncComponentState = ( return { loaded, error, delayed } } -/** - * shared between core and vapor - * @internal - */ -export function loadInnerComponent( - instance: ComponentInternalInstance, - load: () => Promise, - onError: (err: Error) => void, - errorComponent: ConcreteComponent | undefined, -): Promise<() => VNode | null> { - return load() - .then(comp => { - return () => createInnerComp(comp, instance) - }) - .catch(err => { - onError(err) - return () => - errorComponent - ? createVNode(errorComponent as ConcreteComponent, { - error: err, - }) - : null - }) -} - /** * shared between core and vapor * @internal diff --git a/packages/runtime-core/src/index.ts b/packages/runtime-core/src/index.ts index c6033815d7..3668118201 100644 --- a/packages/runtime-core/src/index.ts +++ b/packages/runtime-core/src/index.ts @@ -602,8 +602,6 @@ export { useAsyncComponentState, isAsyncWrapper, performAsyncHydrate, - loadInnerComponent, - createInnerComp, } from './apiAsyncComponent' /** * @internal diff --git a/packages/runtime-vapor/__tests__/hydration.spec.ts b/packages/runtime-vapor/__tests__/hydration.spec.ts index 7de42143f4..994a8f6ab4 100644 --- a/packages/runtime-vapor/__tests__/hydration.spec.ts +++ b/packages/runtime-vapor/__tests__/hydration.spec.ts @@ -3,7 +3,7 @@ import { defineVaporAsyncComponent, delegateEvents, } from '../src' -import { nextTick, reactive, ref } from '@vue/runtime-dom' +import { defineAsyncComponent, nextTick, reactive, ref } from '@vue/runtime-dom' import { compileScript, parse } from '@vue/compiler-sfc' import * as runtimeVapor from '../src' import * as runtimeDom from '@vue/runtime-dom' @@ -3019,7 +3019,8 @@ describe('Vapor Mode hydration', () => { const compCode = `` const SSRComp = compileVaporComponent(compCode, data, undefined, true) let serverResolve: any - let AsyncComp = defineVaporAsyncComponent( + // use defineAsyncComponent in SSR + let AsyncComp = defineAsyncComponent( () => new Promise(r => { serverResolve = r @@ -3045,7 +3046,7 @@ describe('Vapor Mode hydration', () => { new Promise(r => { clientResolve = r }), - ) + ) as any const Comp = compileVaporComponent(compCode, data) const App = compileVaporComponent(appCode, data, { AsyncComp }) @@ -3091,7 +3092,8 @@ describe('Vapor Mode hydration', () => { true, ) let serverResolve: any - let AsyncComp = defineVaporAsyncComponent( + // use defineAsyncComponent in SSR + let AsyncComp = defineAsyncComponent( () => new Promise(r => { serverResolve = r @@ -3115,7 +3117,7 @@ describe('Vapor Mode hydration', () => { new Promise(r => { clientResolve = r }), - ) + ) as any const Comp = compileVaporComponent(compCode) const App = compileVaporComponent(appCode, data, { AsyncComp }) @@ -3161,7 +3163,8 @@ describe('Vapor Mode hydration', () => { true, ) let serverResolve: any - let AsyncComp = defineVaporAsyncComponent( + // use defineAsyncComponent in SSR + let AsyncComp = defineAsyncComponent( () => new Promise(r => { serverResolve = r @@ -3187,7 +3190,7 @@ describe('Vapor Mode hydration', () => { new Promise(r => { clientResolve = r }), - ) + ) as any const Comp = compileVaporComponent(compCode) const App = compileVaporComponent(appCode, data, { AsyncComp }) diff --git a/packages/runtime-vapor/src/apiDefineAsyncComponent.ts b/packages/runtime-vapor/src/apiDefineAsyncComponent.ts index 5072340af5..55723870a3 100644 --- a/packages/runtime-vapor/src/apiDefineAsyncComponent.ts +++ b/packages/runtime-vapor/src/apiDefineAsyncComponent.ts @@ -3,11 +3,8 @@ import { type AsyncComponentOptions, ErrorCodes, createAsyncComponentContext, - createInnerComp as createSSRInnerComp, currentInstance, handleError, - isInSSRComponentSetup, - loadInnerComponent as loadSSRInnerComponent, markAsyncBoundary, performAsyncHydrate, useAsyncComponentState, @@ -123,11 +120,6 @@ export function defineVaporAsyncComponent( // already resolved let resolvedComp = getResolvedComp() if (resolvedComp) { - // SSR - if (__SSR__ && isInSSRComponentSetup) { - return () => createSSRInnerComp(resolvedComp! as any, instance as any) - } - frag!.update(() => createInnerComp(resolvedComp!, instance)) return frag } @@ -146,16 +138,6 @@ export function defineVaporAsyncComponent( if (__FEATURE_SUSPENSE__ && suspensible && instance.suspense) { } - // SSR - if (__SSR__ && isInSSRComponentSetup) { - return loadSSRInnerComponent( - instance as any, - load, - onError, - errorComponent, - ) - } - const { loaded, error, delayed } = useAsyncComponentState( delay, timeout, -- 2.47.3