代码之家  ›  专栏  ›  技术社区  ›  laurent

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

  •  0
  • laurent  · 技术社区  · 6 年前

    我正在开发一个应用程序,它会在React组件中的某个地方抛出一个错误,所以在控制台中有一个错误:

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

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

    所以我想知道,这种行为能在某个地方被禁用吗?我不确定是什么原因造成的,如果只是React或其他插件。任何帮助都将不胜感激。

    0 回复  |  直到 6 年前
        1
  •  2
  •   David Zambrano    4 年前

    我想你的组件中有这个方法,只是 去除

     static getDerivedStateFromError(error) {
     // Update state so the next render will show the fallback UI.    
         return { hasError: true };
     }
    
        2
  •  1
  •   Bogdan Mihai    4 年前

    经过大量挖掘,我终于把它弄清楚了。

    我找到了解决办法 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 ).

    对我来说,这两个都奏效了。

        3
  •  0
  •   ams khadhiri    4 年前

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

    它被多次渲染。所以你会得到这个问题。 添加 React.PureComponent 在类组件中,它将解决您的问题