React异常处理

React异常处理

项目本地开发使用的是umi,开发时报错会直接在页面上展示报错信息,但是项目打包上开发或者测试环境的时候,有报错信息有时候不白屏,有时候白屏,这就有点让我费解。后面研究了一下,之前的代码很多逻辑是写在了dva的model中的,如果有异常抛出的话,会被dva自带的异常捕获处理掉,所以不会中断掉js的执行,但是在组件内部写的代码,有错误的话(比如请求异常)这样在组件中没有对这些异常进行处理的话就会导致js中断执行,于是渲染函数还没执行完,就白屏了。

那如何解决这个问题呢?目前我给出的有两种方法:一是使用js自带的异常处理方法(window.onerror, try-catch等)来处理异常,让组件不会被异常中断,能够正常渲染。二是使用React的错误边界组件(ErrorBoundary),处理子组件抛出的异常,并降级渲染。

遗憾的是,error boundaries并不会捕捉这些错误:

  • 事件处理程序
  • 异步代码 (e.g. setTimeout or requestAnimationFrame callbacks)
  • 服务端的渲染代码
  • error boundaries自己抛出的错误

但前两个错误并不是在渲染函数中发生的,这样并不会让浏览器白屏,仅针对渲染函数执行时抛出的错误进行处理,可以减轻不少工作量。但是严格点来说,有错误肯定还是要处理的,至于要如何更好的处理,后面再继续探索…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值