当前位置: 首页 > news >正文

react 错误边界

注意点:

  1. 类组件是可以和函数式组件混合写的!!!
  2. getDerivedStateFromError是静态的,避免副作用,如果想将错误上报到服务器,则去componentDidCatch里去处理。
  3. getDerivedStateFromError直接返回{ hasError: true, errorInfo: error },即可修改当前错误边界组件的 state,从而达到控制显示内容的效果
  4. 错误边界不捕捉以下错误
  • 事件处理程序(了解更多
  • 异步代码(例如 setTimeout 或 requestAnimationFrame 回调)。
  • 服务器端的渲染
  • 在错误边界本身(而不是其子女)中抛出的错误

import { Store } from 'antd/es/form/interface';
import React from 'react';function Bomb({ username }) {console.log('username', username);if (username === 'bomb') {throw new Error('💥 CABOOM 💥');}return <div>{`Hi ${username}`}</div>;
}import { Component } from 'react';class MyErrorBoundary extends Component {constructor(props: any) {super(props);this.state = {hasError: false,errorInfo: null,};}componentDidMount(): void {console.log('this.props', this.props);}componentDidCatch(error: Error, errorInfo: React.ErrorInfo): void {// 在这里可以做错误收集、打印、掉接口上报console.log('MyErrorBoundary   _________   componentDidCatch   error,errorInfo',error,errorInfo,);}static getDerivedStateFromError(error: Error) {console.log('MyErrorBoundary   _________   getDerivedStateFromError   error,errorInfo', error);return { hasError: true, errorInfo: error };}render() {const { hasError, errorInfo } = this.state;return (<div style={{ border: '2px solid pink' }}>这里是我自定义的错误边界{hasError ? (<div><h2>Something went wrong!!!!!</h2><pre style={{ color: 'pink' }}>{errorInfo.message}</pre></div>) : (this.props.children)}</div>);}
}function App() {const [username, setUsername] = React.useState('');const usernameRef = React.useRef(null);return (<div><label>{`Username (don't type "bomb"): `}<inputplaceholder={`type "bomb"`}value={username}onChange={(e) => setUsername(e.target.value)}ref={usernameRef}/></label><div><MyErrorBoundary><Bomb username={username} /></MyErrorBoundary></div></div>);
}export default App;

在这里插入图片描述

http://www.dtcms.com/a/336641.html

相关文章:

  • Python 内置模块 collections 常用工具
  • 【撸靶笔记】第二关:GET -Error based -Intiger based
  • Spring Framework :IoC 容器的原理与实践
  • CW32L011_电机驱动器开发板试用
  • 工作中使用到的时序指标异常检测算法 TRPS 【Temporal Residual Pattern Similarity】和 K-sigma 算法
  • 区块链:数字时代信任基石的构建与创新
  • 25年第十本【金钱心理学】
  • 1. Docker的介绍和安装
  • 洛谷 P2324 [SCOI2005] 骑士精神-提高+/省选-
  • CE桥接MuMu模拟器
  • 计算机网络 Session 劫持 原理和防御措施
  • IC验证 AHB-RAM 项目(一)——项目理解
  • 【leetcode】58. 最后一个单词的长度
  • Python大模型应用开发-核心技术与项目开发
  • 【165页PPT】基于IPD的研发项目管理(附下载方式)
  • vue路由懒加载
  • 数据链路层(1)
  • Linux操作系统软件编程——多线程
  • 基于飞算JavaAI实现高端算法性能优化:从理论到落地的性能跃迁实践
  • C++---迭代器删除元素避免索引混乱
  • 【Golang】:函数和包
  • 因果语义知识图谱如何革新文本预处理
  • os详解,从上面是‘os‘模块?到核心组成和常用函数
  • 智能合约里的 “拒绝服务“ 攻击:让你的合约变成 “死机的手机“
  • 什么是AI Agent(智能体)
  • nature子刊:MCNN基于电池故障诊断的模型约束的深度学习方法
  • [Oracle数据库] Oracle 多表查询
  • 网络常识-我的电脑啥时安装了证书
  • 生成模型实战 | InfoGAN详解与实现
  • java如何使用正则提取字符串中的内容