15 错误边界与使用技巧

本文介绍了React16中的错误边界,一种防止组件UI因错误崩溃的功能。错误边界通过class组件捕获子组件在渲染、生命周期方法及构造函数中的错误。`getDerivedStateFromError`用于更新状态,而`componentDidCatch`用于处理错误并获取相关信息。虽然事件处理、异步代码等场景无法捕获,但错误边界可以向上冒泡。示例代码展示了错误边界的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

错误边界

  • React16增加
  • 防止某个组件的UI渲染错误导致整个应用崩溃
  • 子组件发生JS错误,有备用的渲染UI
  • 错误边界是组件,只能用class组件来写

错误边界组件捕获错误的时机

  • 渲染时
  • 生命周期函数中
  • 组件树的构造函数中

getDerivedStateFromError

  • 生命周期函数 static getDerivedStateFromError(error)
  • 参数:子组件抛出的错误
  • 返回值:新的state
  • 渲染阶段调用
  • 作用:不允许出现副作用(异步代码、操作dom等)

componentDidCatch

  • 生命周期函数
  • 组件原型上的方法
  • 边界组件捕获异常,并进行后续处理
  • 作用:错误信息获取,运行副作用
  • 在组件抛出错误后调用
  • 参数:error(抛出的错误)、info(组件引发错误相关的信息,即组件栈)
componentDidCatch(err, info) {
   
    console.log('componentDidCatch err', err)
    console.log('componentDidCatch info', info)
}

在这里插入图片描述

无法捕获的场景

  • 1.事件处理函数(无法显示备用UI)
function Correct() {
   
    const handleClick = () => {
   
        console.log('点击')
        throw new Error('click throw err')
    }
    return (
        <div onClick={
   handleClick}>正常显示内容</div>
    )
}
<ErrorBoundary>
    <Correct />
<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值