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>
 //在要加的位置包裹住即可

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

相关推荐
zeijiershuai1 分钟前
Vue框架
前端·javascript·vue.js
写完这行代码打球去3 分钟前
没有与此调用匹配的重载
前端·javascript·vue.js
华科云商xiao徐3 分钟前
使用CPR库编写的爬虫程序
前端
狂炫一碗大米饭6 分钟前
Event Loop事件循环机制,那是什么事件?又是怎么循环呢?
前端·javascript·面试
IT、木易7 分钟前
大白话Vue Router 中路由守卫(全局守卫、路由独享守卫、组件内守卫)的种类及应用场景
前端·javascript·vue.js
顾林海8 分钟前
JavaScript 变量与常量全面解析
前端·javascript
程序员小续8 分钟前
React 组件库:跨版本兼容的解决方案!
前端·react.js·面试
乐坏小陈9 分钟前
2025 年你希望用到的现代 JavaScript 模式 【转载】
前端·javascript
生在地上要上天9 分钟前
从600行"状态地狱"到可维护策略模式:一次列表操作限制重构实践
前端
oil欧哟11 分钟前
🥳 做了三个月的学习卡盒小程序,开源了!
前端·vue.js·微信小程序