Reactjs 错误边界优雅处理方法demo

 更新时间:2022年12月13日 15:49:54   作者:Jovie  
这篇文章主要为大家介绍了Reactjs 错误边界优雅处理方法demo,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

正文

每当你的react应用在任何react功能或类组件中遇到任何javascript错误时,都会破坏整个应用,这对你的终端用户来说是一种糟糕的体验。React 16 引入了错误边界 ,以摆脱你的应用程序中的这种糟糕体验。有了错误边界 ,你现在可以优雅地处理并让用户知道,每当你的应用程序遇到错误时,就会出现问题

在这篇文章中,我们将学习如何通过实现错误边界来处理这些错误 ,并看看它们的作用。

首先,在vs code或任何其他IDE中创建一个新的react应用程序,我个人更喜欢VS Code。

什么是错误边界?

错误边界也是反应组件,它可以帮助你捕捉被错误边界包裹的组件中的错误,并显示一个回退 UI(当捕捉到错误时显示的UI,而不是崩溃的应用程序)。

错误边界可以捕捉

  • 渲染错误
  • 生命周期错误
  • 构造器错误

错误边界不能捕捉

  • 事件处理程序中的错误
  • 异步代码中的错误
  • 服务器端渲染中的错误
  • 错误边界中的错误 (Duhh!)

错误边界的实现

要使一个类组件成为错误边界组件,你只需要定义**静态的getDerivedStateFromError()componentDidCatch()**生命周期方法。

让我们创建一个新的类组件并使其成为一个错误边界,让我们滚动

export default class ErrorBoundary extends React.Component {
  constructor(props) {
    super(props);
    this.state = { error: null, errorInfo: null };
  }
  componentDidCatch(error, errorInfo) {
    // use lifecycle to catch errors in any components below and re-render fallback UI
    this.setState({
      error: error,
      errorInfo: errorInfo,
    });
  }
  render() {
    if (this.state.errorInfo) {
      // Fallback UI
      return (
        <div>
          <h2>Something went wrong.</h2>
          <details style={{ whiteSpace: "pre-wrap" }}>
            {this.state.error && this.state.error.toString()}
            <br />
            {this.state.errorInfo.componentStack}
          </details>
        </div>
      );
    }
    // without error render normally in happy flow 
    return this.props.children;
  }
}

用错误边界包住组件

现在我们可以用错误边界来包装我们的整个应用程序,或者包装我们的子组件,以便在特定的组件上显示后退的用户界面,让我们看看这个动作吧

// Wrapping child component
<ErrorBoundary>
 <ComponentThatThrowsError />
</ErrorBoundary>
// Wrapping our entire application
<ErrorBoundary>
 <App />
</ErrorBoundary>

抛出一个错误

让我们在useEffect中抛出一个错误,看看我们的错误边界是否能抓住。

const ComponentThatThrowsError = () => {
  const [counter, setCounter] = useState(0);
  useEffect(() => {
    if (counter === 5) {
      throw new Error("Something went wrong");
    }
  }, [counter]);
  return (
    <div>
      <p>Parent Component Counter</p>
      <button
        className="btn"
        onClick={() => {
          setCounter(counter + 1);
        }}
      >
        {counter}
      </button>
    </div>
  );
};

当计数器的值等于5时,我们就抛出了一个错误。

晃动你的叔叔

我们可以看到,一旦子组件的计数器达到5,应用程序就会为该组件渲染回退的用户界面,而当主错误边界捕捉到一个错误时,它就会渲染出白色的屏幕,显示出出错的情况

总结

我们在这一章中讲了很多,我希望这对你来说不算太多。你学到了如何创建错误边界,以及为什么和在哪里使用它们。它们如何使你的应用程序的体验更好。

以上就是Reactjs 错误边界优雅处理方法demo的详细内容,更多关于Reactjs 错误边界的资料请关注脚本之家其它相关文章!

相关文章

  • react+ant.d添加全局loading方式

    react+ant.d添加全局loading方式

    这篇文章主要介绍了react+ant.d添加全局loading方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • React子组件调用父组件的方法

    React子组件调用父组件的方法

    本文主要介绍了React子组件调用父组件的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08
  • React Grid Layout基础使用示例教程

    React Grid Layout基础使用示例教程

    React Grid Layout是一个用于在React应用程序中创建可拖拽和可调整大小的网格布局的库,通过使用React Grid Layout,我们可以轻松地创建自适应的网格布局,并实现拖拽和调整大小的功能,本文介绍了React Grid Layout的基础使用方法,感兴趣的朋友一起看看吧
    2024-02-02
  • React Fiber结构的创建步骤

    React Fiber结构的创建步骤

    这篇文章主要介绍了React Fiber结构的创建步骤,帮助大家更好的理解和学习使用React,感兴趣的朋友可以了解下
    2021-04-04
  • React项目中decorators装饰器报错问题解决方案

    React项目中decorators装饰器报错问题解决方案

    这篇文章主要介绍了React项目中decorators装饰器报错,本文给大家分享问题所在原因及解决方案,通过图文实例相结合给大家介绍的非常详细,需要的朋友可以参考下
    2023-01-01
  • React Fiber构建completeWork源码解析

    React Fiber构建completeWork源码解析

    这篇文章主要为大家介绍了React Fiber构建completeWork源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • 使用 React hooks 实现类所有生命周期

    使用 React hooks 实现类所有生命周期

    react 自 16.8 开始,引入了 Hooks 概念,使得函数组件中也可以拥有自己的状态,并且可以模拟对应的生命周期,这篇文章主要介绍了使用 React hooks 怎么实现类里面的所有生命周期,需要的朋友可以参考下
    2023-02-02
  • 用React-Native+Mobx做一个迷你水果商城APP(附源码)

    用React-Native+Mobx做一个迷你水果商城APP(附源码)

    这篇文章主要介绍了用React-Native+Mobx做一个迷你水果商城APP,功能需要的朋友可以参考下
    2017-12-12
  • react获取input输入框的值的方法示例

    react获取input输入框的值的方法示例

    这篇文章主要介绍了react获取input输入框的值的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • React Refs 的使用forwardRef 源码示例解析

    React Refs 的使用forwardRef 源码示例解析

    这篇文章主要为大家介绍了React 之 Refs 的使用和 forwardRef 的源码解读,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11

最新评论