错误边界
- 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)
}

无法捕获的场景
function Correct() {
const handleClick = () => {
console.log('点击')
throw new Error('click throw err')
}
return (
<div onClick={
handleClick}>正常显示内容</div>
)
}
<ErrorBoundary>
<Correct />
<