当尝试在服务器端使用 Suspense 组件时,React 会抛出错误:
未捕获错误:服务器未完成此 Suspense 边界:服务器使用不支持 Suspense 的“renderToString”。如果您打算让此 Suspense 边界在服务器上呈现后备内容,请考虑在 Suspense 边界内的某处抛出错误。如果您想让服务器等待挂起的组件,请切换到“renderToPipeableStream”,它支持服务器上的 Suspense
我在这个用例中:
如果您打算让此 Suspense 边界在服务器上呈现后备内容,请考虑在 Suspense 边界内的某处抛出错误。
因为我希望前端加载系统从加载状态中恢复,加载包并在加载后渲染。
我是这样遵循建议的:
const ErrorComponent = () => {
throw new Error("Server-side Suspense failed as expected")
}
const FallbackComponent: React.ComponentType<PropsT> = () => (
<Suspense fallback={<Loader />}>
<ErrorComponent />
</Suspense>
)
这工作正常,但错误会打印到控制台并发送到监控工具。我怎样才能避免这种情况?该错误被报告为服务器端渲染错误,而不是通过我的 ErrorBoundary。
我认为我们可能需要比您提供的更多背景信息。 Fallback 组件是如何/在哪里渲染的?您在使用下一步吗?