zoukankan      html  css  js  c++  java
  • React 错误边界

    错误边界介绍

    部分 UI 中的 JavaScript 错误不应该破坏整个应用程序。 为了解决 react 用户的这个问题,react 16 引入了一个 错误边界(Error Boundaries) 的新概念

    错误边界是 React 组件,它可以 在子组件树的任何位置捕获 JavaScript 错误,记录这些错误,并显示一个备用 UI ,而不是使整个组件树崩溃。 错误边界(Error Boundaries) 在渲染,生命周期方法以及整个组件树下的构造函数中捕获错误。g

    错误边界无法捕获如下错误:

    • 事件处理
    • 异步代码 (例如 setTimeout 或 requestAnimationFrame 回调函数)
    • 服务端渲染
    • 错误边界自身抛出来的错误 (而不是其子组件)

    如果一个类组件定义了生命周期方法中的任何一个(或两个)static getDerivedStateFromError() 或 componentDidCatch(),那么它就成了一个错误边界。 使用 static getDerivedStateFromError()在抛出错误后渲染回退 UI。 使用 componentDidCatch() 来记录错误信息。

    class ErrorBoundary extends React.Component {
      constructor(props) {
        super(props);
        this.state = { hasError: false };
      }
    
      static getDerivedStateFromError(error) {
        // Update state so the next render will show the fallback UI.
        return { hasError: true };
      }
    
      componentDidCatch(error, info) {
        // You can also log the error to an error reporting service
        logErrorToMyService(error, info);
      }
    
      render() {
        if (this.state.hasError) {
          // You can render any custom fallback UI
          return <h1>Something went wrong.</h1>;
        }
    
        return this.props.children;
      }
    }

    而后你可以像一个普通的组件一样使用:

    <ErrorBoundary>
      <MyWidget />
    </ErrorBoundary>

    错误边界(Error Boundaries) 仅可以捕获其子组件的错误。错误边界无法捕获其自身的错误。如果一个错误边界无法渲染错误信息,则错误会向上冒泡至最接近的错误边界

    static getDerivedStateFromError()

    在后代组件抛出错误后调用此生命周期。 它接收作为参数抛出的错误,并应返回值以更新 state(状态)。

    vi设计http://www.maiqicn.com 办公资源网站大全https://www.wode007.com

    componentDidCatch()

    componentDidCatch(error, info)

    • error - 抛出的错误。
    • info - 包含 componentStack 键的对象,其中包含 有关哪个组件引发错误的信息 。
  • 相关阅读:
    linux 查看端口占用情况
    linux下python脚本的运行
    js 事件冒泡
    linux下设置path
    查看和修改Linux的时间
    逗号分割的字符串存储到临时表中
    Centos下搭建Web服务器
    如何让input和img水平对齐
    操作系统方面书籍推荐
    Linus的十大名言
  • 原文地址:https://www.cnblogs.com/xiaonian8/p/13764927.html
Copyright © 2011-2022 走看看