]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
fix(defineVaporAsyncComponent): remove SSR related code
authordaiwei <daiwei521@126.com>
Wed, 15 Oct 2025 02:38:26 +0000 (10:38 +0800)
committerdaiwei <daiwei521@126.com>
Wed, 15 Oct 2025 02:38:26 +0000 (10:38 +0800)
packages/runtime-core/src/apiAsyncComponent.ts
packages/runtime-core/src/index.ts
packages/runtime-vapor/__tests__/hydration.spec.ts
packages/runtime-vapor/src/apiDefineAsyncComponent.ts

index 53d0e4ad3fbdd80b1fa0cee9827eb835466e96fb..67c8dcfdfa017eda1b9495a6c75720012e172c45 100644 (file)
@@ -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<any>,
-  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
index c6033815d77b3186f5b4a6b5d97c31bb591f18c7..3668118201b34d1e3920da5dd4ae750864035237 100644 (file)
@@ -602,8 +602,6 @@ export {
   useAsyncComponentState,
   isAsyncWrapper,
   performAsyncHydrate,
-  loadInnerComponent,
-  createInnerComp,
 } from './apiAsyncComponent'
 /**
  * @internal
index 7de42143f464cea8ba2cd9944236ed81252641e4..994a8f6ab4c12f87b0759aebdd089a9ac3159b98 100644 (file)
@@ -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 = `<button @click="data.spy">hello!</button>`
       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 })
index 5072340af5dd7f9972d51a327968eb08527fb7d9..55723870a38e8aeb562766a699ba834c47835555 100644 (file)
@@ -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<T extends VaporComponent>(
       // 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<T extends VaporComponent>(
       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,