服务器端呈现后的React-Router客户端错误处理

时间:2016-09-02 14:02:35

标签: reactjs error-handling react-router isomorphic-javascript

我正在为我的React应用程序使用服务器端渲染,但是当出现问题时无法绕过显示错误页面的逻辑。

例如:

  • 用户请求/article/123
  • 获取文章时出现问题
  • 我想显示500错误页面

服务器端部分很简单。我告诉React-Router提供我的错误组件。到目前为止一切都很好。

但是当提供页面时,会执行客户端javascript并接管渲染。 React-Router查看url /article/123并加载显示文章的组件(但由于数据不存在而失败..)

有没有办法让客户端知道我们想要显示错误组件?

我能想到的唯一想法是:将错误添加到全局redux状态。在渲染组件之前,请检查全局状态中是否存在错误并显示错误组件。但缺点是您必须在所有组件中实现该检查逻辑。应该有一些更优雅的方法来解决这个问题。

1 个答案:

答案 0 :(得分:1)

实现客户端错误处理有几种不同的方法;我发现使用高阶组件效果最好。您将创建一个包装器组件,用于检查服务器响应中的错误。如果找到一个,请提供相应的错误页面。如果HOC没有检测到错误,请提供用户最初请求的组件。

以下是关于如何实施HOC的一个很好的解释: https://medium.com/@franleplant/react-higher-order-components-in-depth-cf9032ee6c3e