我正在为我的React应用程序使用服务器端渲染,但是当出现问题时无法绕过显示错误页面的逻辑。
例如:
/article/123
500
错误页面服务器端部分很简单。我告诉React-Router提供我的错误组件。到目前为止一切都很好。
但是当提供页面时,会执行客户端javascript并接管渲染。 React-Router查看url /article/123
并加载显示文章的组件(但由于数据不存在而失败..)
有没有办法让客户端知道我们想要显示错误组件?
我能想到的唯一想法是:将错误添加到全局redux状态。在渲染组件之前,请检查全局状态中是否存在错误并显示错误组件。但缺点是您必须在所有组件中实现该检查逻辑。应该有一些更优雅的方法来解决这个问题。
答案 0 :(得分:1)
实现客户端错误处理有几种不同的方法;我发现使用高阶组件效果最好。您将创建一个包装器组件,用于检查服务器响应中的错误。如果找到一个,请提供相应的错误页面。如果HOC没有检测到错误,请提供用户最初请求的组件。
以下是关于如何实施HOC的一个很好的解释: https://medium.com/@franleplant/react-higher-order-components-in-depth-cf9032ee6c3e