feat(ssr): compiler-ssr support for Suspense
This commit is contained in:
19
packages/server-renderer/src/helpers/ssrRenderSuspense.ts
Normal file
19
packages/server-renderer/src/helpers/ssrRenderSuspense.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
import { PushFn, ResolvedSSRBuffer, createBuffer } from '../renderToString'
|
||||
import { NOOP } from '@vue/shared'
|
||||
|
||||
type ContentRenderFn = (push: PushFn) => void
|
||||
|
||||
export async function ssrRenderSuspense({
|
||||
default: renderContent = NOOP,
|
||||
fallback: renderFallback = NOOP
|
||||
}: Record<string, ContentRenderFn | undefined>): Promise<ResolvedSSRBuffer> {
|
||||
try {
|
||||
const { push, getBuffer } = createBuffer()
|
||||
renderContent(push)
|
||||
return await getBuffer()
|
||||
} catch {
|
||||
const { push, getBuffer } = createBuffer()
|
||||
renderFallback(push)
|
||||
return getBuffer()
|
||||
}
|
||||
}
|
||||
@@ -14,6 +14,7 @@ export {
|
||||
export { ssrInterpolate } from './helpers/ssrInterpolate'
|
||||
export { ssrRenderList } from './helpers/ssrRenderList'
|
||||
export { ssrRenderPortal } from './helpers/ssrRenderPortal'
|
||||
export { ssrRenderSuspense } from './helpers/ssrRenderSuspense'
|
||||
|
||||
// v-model helpers
|
||||
export {
|
||||
|
||||
Reference in New Issue
Block a user