Nuxt 提供了 <NuxtClientFallback> 组件,如果其任何子组件在 SSR 中触发错误,则在客户端渲染其内容。
app/pages/example.vue
<template>
<div>
<Sidebar />
<!-- this component will be rendered on client-side -->
<NuxtClientFallback fallback-tag="span">
<Comments />
<BrokeInSSR />
</NuxtClientFallback>
</div>
</template>
事件
@ssr-error:当子组件在 SSR 中触发错误时触发的事件。请注意,此事件仅在服务端触发。<template> <NuxtClientFallback @ssr-error="logSomeError"> <!-- ... --> </NuxtClientFallback> </template>
属性
placeholderTag|fallbackTag:指定在服务端插槽渲染失败时要渲染的兜底标签。- 类型:
string - 默认值:
div
- 类型:
placeholder|fallback:指定在插槽渲染失败时要渲染的兜底内容。- 类型:
string
- 类型:
keepFallback:如果服务端渲染失败,则保留兜底内容。- 类型:
boolean - 默认值:
false
- 类型:
placeholder 和 fallback 属性会将内容渲染为原始 HTML。请勿将不可信的用户输入传递给这些属性,因为这可能会导致 XSS 漏洞。对于需要正确转义的动态内容,请改用 #fallback 或 #placeholder 插槽。<template>
<!-- render <span>Hello world</span> server-side if the default slot fails to render -->
<NuxtClientFallback
fallback-tag="span"
fallback="Hello world"
>
<BrokeInSSR />
</NuxtClientFallback>
</template>
插槽
#fallback:指定插槽在服务端渲染失败时要显示的内容。
<template>
<NuxtClientFallback>
<!-- ... -->
<template #fallback>
<!-- this will be rendered on server side if the default slot fails to render in ssr -->
<p>Hello world</p>
</template>
</NuxtClientFallback>
</template>