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

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

相关推荐
哟哟耶耶4 分钟前
Plugin-webpack内置功能split-chunks-plugin配置打包代码分割
前端·webpack·node.js
青梅主码6 分钟前
给 AI 打个分,就能搞出估值17亿独角兽??刚刚完成1.5亿美元A轮融资,这个AI 评测平台彻底火了!LMArena
前端
GUIRH9 分钟前
Vue指令
前端
林恒smileZAZ11 分钟前
前端技巧:检测到省略号文本自动显示 Tooltip
开发语言·前端·javascript
Zzz不能停11 分钟前
阻止冒泡和阻止元素默认行为的区别
开发语言·前端·javascript
攀登的牵牛花11 分钟前
前端向架构突围系列 - 架构方法(三):前端设计文档的写作模式
前端·架构
m0_5287238113 分钟前
如何避免多次调用同一接口
前端·javascript·vue.js·性能优化
小高00719 分钟前
Elips:领域模型与 DSL 设计实践:从配置到站点的优雅映射
前端·javascript·后端
远瞻。20 分钟前
【博客】前端新手如何创建自己的个人网站相册
前端·docker·博客·反向代理
青莲84320 分钟前
Java并发编程基础与进阶(线程·锁·原子类·通信)
android·前端·面试