(__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(
}) as T
}
-export function createInnerComp(
+function createInnerComp(
comp: ConcreteComponent,
parent: ComponentInternalInstance,
): VNode {
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
useAsyncComponentState,
isAsyncWrapper,
performAsyncHydrate,
- loadInnerComponent,
- createInnerComp,
} from './apiAsyncComponent'
/**
* @internal
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'
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
new Promise(r => {
clientResolve = r
}),
- )
+ ) as any
const Comp = compileVaporComponent(compCode, data)
const App = compileVaporComponent(appCode, data, { AsyncComp })
true,
)
let serverResolve: any
- let AsyncComp = defineVaporAsyncComponent(
+ // use defineAsyncComponent in SSR
+ let AsyncComp = defineAsyncComponent(
() =>
new Promise(r => {
serverResolve = r
new Promise(r => {
clientResolve = r
}),
- )
+ ) as any
const Comp = compileVaporComponent(compCode)
const App = compileVaporComponent(appCode, data, { AsyncComp })
true,
)
let serverResolve: any
- let AsyncComp = defineVaporAsyncComponent(
+ // use defineAsyncComponent in SSR
+ let AsyncComp = defineAsyncComponent(
() =>
new Promise(r => {
serverResolve = r
new Promise(r => {
clientResolve = r
}),
- )
+ ) as any
const Comp = compileVaporComponent(compCode)
const App = compileVaporComponent(appCode, data, { AsyncComp })
type AsyncComponentOptions,
ErrorCodes,
createAsyncComponentContext,
- createInnerComp as createSSRInnerComp,
currentInstance,
handleError,
- isInSSRComponentSetup,
- loadInnerComponent as loadSSRInnerComponent,
markAsyncBoundary,
performAsyncHydrate,
useAsyncComponentState,
// 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
}
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,