【发布时间】:2020-11-09 20:39:49
【问题描述】:
我正在尝试为一个简单的应用程序添加错误边界。当我单击一个按钮时,屏幕上应该会显示“出了点问题”。但在我的情况下,它并没有那样显示。据我了解ErrorBoundary.js无法正常工作,因为我尝试控制台记录它。当我在屏幕上运行此应用程序时,它显示 错误:不是正确的点击
App.js
import './App.css';
import Button from './Components/Button';
import ErrorBoundary from './Components/ErrorBoundary';
function App() {
return (
<div className="App">
<ErrorBoundary>
<Button />
</ErrorBoundary>
</div>
);
}
export default App;
Button.js
import React, { Component } from 'react';
class Button extends Component {
constructor(props) {
super(props);
this.state = { error: null };
this.handleClick = this.handleClick.bind(this);
}
handleClick() {
console.log("Test Button")
this.state = { error: true};
throw new Error('Not a correct click');
}
render() {
if (this.state.error) {
return <h1>Caught an error!</h1>
}
return <button onClick={this.handleClick} style={{ color: 'white', background: 'blue', width: 200, height: 50 }}>Throw Error</button>
}
}
export default Button;
ErrorBoundary.js
import React, { Component } from 'react'
class ErrorBoundary extends Component {
constructor (props){
super(props);
this.state = {
hasError: false,
error: null,
info: null
}
}
static getDerivedStateFromError(error){
this.state.hasError = true
}
componentDidCatch (error,info){
console.log(error);
console.log(info)
}
render() {
if(this.state.hasError){
return <h2>Something went wrong</h2>
}
return this.props.children;
}
}
export default ErrorBoundary;
【问题讨论】:
标签: javascript reactjs error-handling