React Suspense + ssr:让服务器端错误保持沉默

问题描述 投票:0回答:1

当尝试在服务器端使用 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。

reactjs server-side-rendering react-suspense
1个回答
0
投票

我认为我们可能需要比您提供的更多背景信息。 Fallback 组件是如何/在哪里渲染的?您在使用下一步吗?

© www.soinside.com 2019 - 2024. All rights reserved.