错误边界实质是指什么
实际上是组件
错误边界捕获什么时候的错误
在渲染阶段的错误
错误边界捕获的是谁的错误
捕获的是子组件的错误
错误边界不能捕获什么错误
1、不能捕获异步代码
2、不能捕获事件处理函数
3、不能捕获服务端渲染
4、不能捕获自身抛出的错误
错误边界代码封装
javascript
class ErrorBoundary extends React.Component {
constructor(props) {
super(props);
this.state = {
hasError: false,
};
}
getDerivedStateFromError(error) {
// 更新 state 使下一次渲染能够显示降级后的 UI
return { hasError: true };
}
componentDidCatch(error, errorInfo) {
// 你同样可以将错误日志上报给服务器
logErrorToService(error, errorInfo);
}
render() {
if (this.state.hasError) {
// 你可以自定义降级后的 UI 并渲染
return <h1>wrong message</h1>;
}
return this.props.children;
}
}
export default ErrorBoundary;