refactor: simplify suspense ssr + adjust behavior

This commit is contained in:
Evan You
2020-03-16 15:38:35 -04:00
parent eb5b32fead
commit 38f0269765
7 changed files with 131 additions and 223 deletions

View File

@@ -1,30 +1,14 @@
import { PushFn, ResolvedSSRBuffer, createBuffer } from '../renderToString'
import { PushFn } from '../renderToString'
type ContentRenderFn = (push: PushFn) => void
export async function ssrRenderSuspense({
default: renderContent,
fallback: renderFallback
}: Record<string, ContentRenderFn | undefined>): Promise<ResolvedSSRBuffer> {
try {
if (renderContent) {
const { push, getBuffer } = createBuffer()
push(`<!--[-->`)
renderContent(push)
push(`<!--]-->`)
return await getBuffer()
} else {
return []
}
} catch {
if (renderFallback) {
const { push, getBuffer } = createBuffer()
push(`<!--[-->`)
renderFallback(push)
push(`<!--]-->`)
return getBuffer()
} else {
return []
}
export async function ssrRenderSuspense(
push: PushFn,
{ default: renderContent }: Record<string, (() => void) | undefined>
) {
if (renderContent) {
push(`<!--[-->`)
renderContent()
push(`<!--]-->`)
} else {
push(`<!---->`)
}
}