可能存在一些问题,我们可能需要查看更多代码才能确定。
Axios 0.17.0 会在 400 响应状态上抛出错误。下面的演示显示了这一点。
意外行为可能是由于 的异步行为造成的setState()
。如果您console.log
在调用后立即尝试状态setState()
,那将不起作用。您将需要使用setState
回调。
const signinRequest = () => {
return axios.post('https://httpbin.org/status/400');
}
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
errors: null
}
}
handleSignin = () => {
this.props.userSigninRequest()
.then(result => {
console.log(result.status);
})
.catch(error => {
this.setState({
errors: error.response.status
}, () => {
console.error(this.state.errors);
});
});
}
render() {
return (
<div>
<button onClick={this.handleSignin}>Signin</button>
{this.state.errors}
</div>
)
}
}
ReactDOM.render(<App userSigninRequest={signinRequest} />, document.getElementById("app"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.17.0/axios.js"></script>
<div id="app"></div>