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

ops/2025/1/24 3:34:12/

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

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

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

src/components/ErrorBoundary.tsx

// 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 使下一次渲染能够显示降级后的 UIreturn { hasError: true };}componentDidCatch(error: Error, errorInfo: React.ErrorInfo) {// 你也可以将错误日志上报给服务器console.error("Caught an error:", error, errorInfo);}render() {if (this.state.hasError) {// 你可以自定义降级后的 UIreturn <h1>Something went wrong.</h1>;}return this.props.children; }
}export default ErrorBoundary;

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

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

报错时显示,可以自定义内容:
在这里插入图片描述


http://www.ppmy.cn/ops/152642.html

相关文章

【Elasticsearch入门到落地】6、索引库的操作

接上篇《5、安装IK分词器》 上一篇我们进行了IK分词器的安装与测试&#xff0c;本篇我们来学习ElasticSearch的索引库的操作&#xff0c;学习mapping映射属性以及CRUD操作。 一、前情回顾 我们在前几篇学习了ElasticSearch的基本概念&#xff0c;并动手搭建了ElasticSearch环…

字玩FontPlayer开发笔记12 Vue3撤销重做功能

字玩FontPlayer开发笔记12 Vue3撤销重做功能 字玩FontPlayer是笔者开源的一款字体设计工具&#xff0c;使用Vue3 ElementUI开发&#xff0c;源代码&#xff1a;github | gitee 笔记 撤销重做功能是设计工具必不可少的模块&#xff0c;以前尝试使用成熟的库实现撤销重做功能…

探索前端开发中的 Web Vitals —— 提升用户体验的关键技术

随着用户对网站性能的要求越来越高&#xff0c;前端开发不仅需要关注功能实现&#xff0c;还需要关注页面加载速度、交互响应速度以及视觉稳定性等因素。Google 在 2020 年推出了 Web Vitals&#xff08;网页核心指标&#xff09;&#xff0c;这套指标为前端开发者提供了一种衡…

数据结构(精讲)----应用篇

注意&#xff1a;作者会出两个版本的数据结构的介绍&#xff1b;第一个版本介绍的数据结构会偏向理论性&#xff0c;第二个版本&#xff0c;也就是从这篇文章开始&#xff0c;这个版本会偏向应用性&#xff1b;会带领大家了解数据结构&#xff0c;以及为什么学习数据结构&#…

Windows截获系统鼠标消息转发到指定窗口

注册输入设备&#xff0c;截获系统底层的设备消息 先看关键代码&#xff1a; RAWINPUTDEVICE rids[1]; rids[0].usUsagePage HID_USAGE_PAGE_GENERIC; //0x01 rids[0].usUsage HID_USAGE_GENERIC_MOUSE; //0x02 rids[0].dwFlags RIDEV_INPUTSINK; //0x00000100 rids[0].hwn…

图论DFS:黑红树

我的个人主页 {\large \mathsf{{\color{Red} 我的个人主页} } } 我的个人主页 往 {\color{Red} {\Huge 往} } 往 期 {\color{Green} {\Huge 期} } 期 文 {\color{Blue} {\Huge 文} } 文 章 {\color{Orange} {\Huge 章}} 章 DFS 算法&#xff1a;记忆化搜索DFS 算法&#xf…

【Unity】ScrollViewContent适配问题(Contentsizefilter不刷新、ContentSizeFilter失效问题)

最近做了一个项目&#xff0c;菜单栏读取数据后自动生成&#xff0c;结果用到了双重布局 父物体 尝试了很多方式&#xff0c;也看过很多大佬的文章&#xff0c;后来自己琢磨了一下&#xff0c;当子物体组件自动生成之后&#xff0c;使用以下以下代码效果会好一些&#xff1a; …

IP地址、子网掩码(NETMASK)和网关(Gateway)

IP: 192.168.123.1NETMASK: 255.255.255.0Gateway: 192.168.123.254 IP地址、子网掩码&#xff08;NETMASK&#xff09;和网关&#xff08;Gateway&#xff09;是计算机网络中用于定位和通信的关键元素。针对给出的IP地址192.168.123.1、子网掩码255.255.255.0和网关192.168.12…