react上增加错误边界 当存在错误时 不会显示白屏

react上增加错误边界 当存在错误时 不会显示白屏

定义:错误边界是一个 React 组件,它会在其子组件树中的任何位置捕获 JavaScript 错误,并显示一个备用的 UI 而不是崩溃的组件树

在总项目的组件中创建文件:

src/components/ErrorBoundary.tsx

js 复制代码
// src/components/ErrorBoundary.tsx
import React, { Component } from 'react';

interface ErrorBoundaryProps {
  children: React.ReactNode;
}

interface ErrorBoundaryState {
  hasError: boolean;
}

class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {
  constructor(props: ErrorBoundaryProps) {
    super(props);
    this.state = { hasError: false };
  }

  static getDerivedStateFromError(error: Error) {
    // 更新 state 使下一次渲染能够显示降级后的 UI
    return { hasError: true };
  }

  componentDidCatch(error: Error, errorInfo: React.ErrorInfo) {
    // 你也可以将错误日志上报给服务器
    console.error("Caught an error:", error, errorInfo);
  }

  render() {
    if (this.state.hasError) {
      // 你可以自定义降级后的 UI
      return <h1>Something went wrong.</h1>;
    }

    return this.props.children; 
  }
}

export default ErrorBoundary;

在要使用的组件位置上加:

js 复制代码
//引入错误边界组件
import ErrorBoundary from '@/components/ErrorBoundary' 
//使用:
<KeepAlive id={meta?.keepAlive}>
      <Loading>
          <ErrorBoundary>{Component}</ErrorBoundary> {/* 使用错误边界 */}
      </Loading>
 </KeepAlive>
 //在要加的位置包裹住即可

报错时显示,可以自定义内容:

相关推荐
桂月二二3 小时前
探索前端开发中的 Web Vitals —— 提升用户体验的关键技术
前端·ux
hunter2062064 小时前
ubuntu向一个pc主机通过web发送数据,pc端通过工具直接查看收到的数据
linux·前端·ubuntu
qzhqbb4 小时前
web服务器 网站部署的架构
服务器·前端·架构
刻刻帝的海角4 小时前
CSS 颜色
前端·css
浪浪山小白兔5 小时前
HTML5 新表单属性详解
前端·html·html5
lee5766 小时前
npm run dev 时直接打开Chrome浏览器
前端·chrome·npm
2401_897579656 小时前
AI赋能Flutter开发:ScriptEcho助你高效构建跨端应用
前端·人工智能·flutter
光头程序员6 小时前
grid 布局react组件可以循数据自定义渲染某个数据 ,或插入某些数据在某个索引下
javascript·react.js·ecmascript
浏览器爱好者6 小时前
如何构建一个简单的React应用?
前端·react.js·前端框架