ReactJS componentDidCatch 方法
在本文中,我们将介绍如果在组件中发生一些错误,如何在提交阶段执行一个函数。
当组件或任何子组件在 React 组件生命周期中遇到一些错误时,将调用此方法。此方法允许我们处理应用程序的错误边界。
与 getDerivedStateFromError 方法不同,此方法在提交阶段调用,因此 side-effects 也可以在此方法中允许。
语法
componentDidCatch(err, data)
参数
err - 组件抛出的错误。
data - 存储有关已抛出错误的组件的信息。
示例
在此示例中,我们将构建一个 React 应用程序,如果未发生错误,则显示包含的 Comp 组件;否则显示一些文本。
但是,在这里,在 Comp 组件中,定义在状态未定义时发生错误,该状态触发父组件中的 componentDidCatch 方法。
App.jsx
import React from 'react'; class App extends React.Component { constructor() { super(); this.state = { err: false, }; } componentDidCatch(error) { this.setState({ err: true, }); } render() { return ( <div> {this.state.err ? ( <div style={{border: '2px solid red',}}> Error </div> ) : ( <Comp/> )} </div> ); } } class Comp extends React.Component { render() { return <h1>{this.state.name}</h1>; } } export default App;
输出
这将产生以下结果 −
广告