如何处理react-router子路由中抛出的异常

Cha*_*lie 6 javascript exception reactjs react-router

我在异常处理方面遇到问题react-router@3.0.0

我的路由器是这样连接的:

try {
  ReactDOM.render(<Router history={appHistory}>
    <Route path='/' component={Wrapper}>
      <Route path='bad' component={BadComponent}/>
    </Route>
  </Router>, domElement);
} catch(ex) {
  ReactDOM.render(<Exception ex={ex}/>, domElement);
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果Wrapper抛出渲染异常,我们最终会进入 catch 块。伟大的!

如果Wrapper工作正常,但BadComponent抛出渲染异常,我们不会。嘘!

如果我们到达这一点,那么路由器完全停止工作,我们无法导航到任何已知的良好路线。

React-router API 没有提到错误处理,所以我有点卡住了。

有没有办法将异常返回到顶层,以便它可以优雅地失败?

Iba*_*oda 0

我知道这可能已经太晚了,您可能已经找到了解决方案,甚至不再使用此代码。

如果您还没有发现,请检查 React 提供的错误边界https://reactjs.org/docs/error-boundaries.html