如何防止React在出错时重新创建组件树?

时间:2019-01-31 11:22:23

标签: reactjs error-handling

我正在开发一个应用程序,该应用程序在React组件内的某个地方引发了错误,因此在控制台中会出现以下错误:

  

React会尝试使用您提供的错误边界从头开始重新创建此组件树

我真的不明白为什么React会这样做,因为它显然会导致无限的渲染循环(而且确实如此),因为每次重新渲染时错误都会不断发生。

所以我想知道,可以在某处禁用此行为吗?我不确定是什么原因引起的,如果只是React或其他插件。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

我想您的组件ErrorBoundary中有此方法,只需删除

 static getDerivedStateFromError(error) {
 // Update state so the next render will show the fallback UI.    
     return { hasError: true };
 }

答案 1 :(得分:0)

经过大量挖掘,我设法进行了整理。

我在react-hot-loader回购中找到了解决方案。正如他们所说:

On Hot Module Update we will inject componentDidCatch and a special render
to every Class-based component you have, making Error Boundaries more local.

因此,有两种可能的解决方案:

  1. 将类组件更改为功能组件。
  2. 您可以编写自己的错误报告程序(已指定为here)。

对我来说,这两个都有效。

答案 2 :(得分:0)

<块引用>

React 将尝试使用您提供的错误边界 ErrorBoundary 从头开始​​重新创建此组件树。

它正在重新渲染多次。所以你会得到这个问题。 在类 Component 中添加 React.PureComponent 它将解决您的问题