我使用create-react-app启动了一个应用程序,我有这个错误边界组件:
import React from 'react'
export default class ErrorBoundary extends React.Component {
constructor(props) {
super(props);
this.state = { hasError: false };
}
componentDidCatch(error, info) {
console.log('shouldnt I see this logged??')
this.setState({ hasError: true });
}
render() {
if (this.state.hasError) {
return <h1>Something went wrong.</h1>;
}
return this.props.children;
}
}
我在这个 App 组件中使用它:
import React from 'react'
import ErrorBoundary from './ErrorBoundary'
class App extends React.Component {
render() {
return (
<ErrorBoundary>
<div>
<button onClick={() => { throw new Error('lets throw an error') }}>
Click to throw error
</button>
</div>
</ErrorBoundary>
);
}
}
export default App;
我期待如果我单击 中的按钮App
,应该捕获抛出的错误,并且我应该看到这个记录来自ErrorBoundary
:“我应该看到这个记录吗??”。但我没有看到记录并且它破坏了应用程序:
我误解了什么吗?