GitHub 学习 Demo。

部分 UI 的异常不应该破坏了整个应用。为了解决 React 用户的这一问题,React 16 引入了一种称为 “错误边界” 的新概念。

错误边界的作用在于捕获其子组件树 JavaScript 异常,记录错误并展示替补的自定义 React 组件

错误边界组件的实现

让一个类组件变成一个错误边界,只需实现生命周期方法 static getDerivedStateFromError()或者componentDidCatch()中的任意一个或两个。

class ErrorBoundary extends React.Component {constructor(props) {super(props);this.state = { hasError: false };}/*** 当捕捉到错误时,使得在更新视图之前有机会更新 state* @param error 具体的 JavaScript 异常**static getDerivedStateFromError(error) {// 当捕捉到错误的时候,返回跟新 this.statereturn { hasError: true };}/*** 错误被捕捉完成。* @param error 具体的 JavaScript 异常* @param info 一个记录着错误信息是从哪个组件里抛出来的对象。里面包含一些关键的信息。**componentDidCatch(error, info) {// 可以在这里记录组件的错误信息logErrorToMyService(error, info);}render() {if (this.state.hasError) {// 当错误发生时 显示这部分内容return <h1>Something went wrong.</h1>;}return this.props.children; }
}# 而后你可以像一个普通的组件一样使用:<ErrorBoundary><MyWidget />
</ErrorBoundary>
复制代码

错误边界无法捕获如下错误:

  • 事件处理
  • 异步代码 (例如 setTimeout 或 requestAnimationFrame 回调函数)
  • 服务端渲染
  • 错误边界自身抛出来的错误 (而不是其子组件)

错误边界的最小单位是组件

这里的错误边界内的内容不会别替换。错误会冒泡至黎其最近的父组件。

<header><h2>Header</h2><ErrorBoundary><nav>{ a[0].asd.dawd }<a>Home</a><a>Part1</a><a>Part2</a><a>Part3</a></nav></ErrorBoundary><hr/>
</header>
复制代码

转载于:https://juejin.im/post/5ca0c7f4f265da307d44893a

React 高级应用 -- 错误边界 Error Boundaries相关推荐

  1. react跳转到网络异常页面_React错误边界处理

    最近在项目编写过程中发现经常会因为接口问题抛出各种各的错误,有的时候页面甚至会直接白屏,非常影响用户体验.为此,我仔细研究了一下React处理异常的方案,下面我将开始我的分享. 错误边界的作用 前端异 ...

  2. reactjs错误边界:用来捕获后代组件的错误,渲染出备用页面

    8. 错误边界 理解: 错误边界(Error boundary):用来捕获后代组件错误,渲染出备用页面 特点: 只能捕获后代组件生命周期产生的错误,不能捕获自己组件产生的错误和其他组件在合成事件.定时 ...

  3. React入门(3)-- React的错误边界(Error Boundaries)

    熟悉React都知道,在React中一些UI的错误,比如throw new Error(),加载服务器资源报错时,或者一些js的语法错误可能会导致整个项目崩溃掉,满屏的红色报错,非常不友好.为了解决这 ...

  4. react 错误边界_React with GraphQL和错误边界中的自定义错误页面

    react 错误边界 by Abi Noda 通过Abi Noda React with GraphQL和错误边界中的自定义错误页面 (Custom error pages in React with ...

  5. [react] 说说你对Error Boundaries的理解

    [react] 说说你对Error Boundaries的理解 错误边界是React16新推出的一种错误处理的方式,在v16之前,React的抛错会导致页面显示的错误,v16修改这种方式成了组件如果产 ...

  6. react 错误边界_如何在React 16中使用错误边界

    react 错误边界 Have you seen these in your console? 您是否在控制台中看到了这些? Cannot read property 'getHostNode'of ...

  7. React Portals与Error Boundaries

    Portals 在React 16.x 新增了一个名为"Protals"的特性,直接按照字面意思翻译实在不靠谱.在描述这个特性时,我们还是用官方的英文单词来指定它.Portals的 ...

  8. [react] React v15中怎么处理错误边界?

    [react] React v15中怎么处理错误边界? React 15 中有一个支持有限的错误边界方法 unstable_handleError.此方法不再起作用,同时自 React 16 beta ...

  9. 16 代码分割之错误边界与Suspense和命名导出

    代码分割之错误边界与Suspense const Main = React.lazy(() => import('./main')) class ErrorBoundary extends Re ...

最新文章

  1. 神经网络基础:(1)得分函数 or 得分函数
  2. java方法未定义类型_java - 方法未定义为类 - SO中文参考 - www.soinside.com
  3. Java JSON 之 Xml 转 JSON 字符串
  4. (软件工程复习核心重点)第十二章软件项目管理习题
  5. matlab plot 多种颜色_Matlab画图,只需要这几步
  6. CJOJ 【DP合集】最长上升序列2 — LIS2
  7. 一个叫花子的故事(十个人看完十个人开悟)
  8. IT30: 30岁IT人CTOCIO职业生涯探讨(2009-2013)
  9. 什么叫工作波长,截止波长和波导波长
  10. 数说CS|北京大学前沿交叉学科研究院大数据研究中心保研生源大起底!
  11. mailgun php版本,使用 PHP mailgun 发送邮件
  12. 给body设置背景图片,整个图片完整的充满屏幕
  13. Android:微信授权登录与微信分享全解析
  14. css-超出内容省略号
  15. 华为服务器查询IPMI地址
  16. JAVA基础----终弄清java核心技术卷1中的int fourthBitFromRight = (n 0b1000 ) / 0b1000;是怎么回事了。。。
  17. 自然语言处理NLP星空智能对话机器人系列:深入理解Transformer自然语言处理 WMT数据处理
  18. C/C++后端学习秘籍
  19. Keil MDK使用第7篇---Go To Definition 和 Go To referebce的区别
  20. python123创意绘画_Turtle 创意绘画

热门文章

  1. python2读文件,python之文件的读写(2)
  2. 宅家36天咸鱼翻身入职腾讯,值得收藏!
  3. safari 浏览器提示添加到主屏幕_Safari浏览器的几个小技巧你掌握了吗?
  4. mendeley 笔记_免费文献管理器 Mendeley,其实比你想象的好用!
  5. mysql在学号列创建主码约束_MySQL 数据完整性
  6. python猫狗大战pytorch_深度学习实战---猫狗大战(pytorch实现)
  7. 鸿蒙个人用户怎么申请,鸿蒙OS来了,这些机型的用户可以申请
  8. $(img)是什么意思_什么原因可以让你坚持跑步?医生总结5点,足以让你告别懒惰...
  9. 考虑空气阻力的抛射体的matlab,考虑空气阻力的抛射体运动mtlab仿真
  10. python过拟合_梯度下降、过拟合和归一化