因此,我尝试按条件运行该函数:如果catch
方法中出现错误。
为此,我在组件状态下实现了this.state.loginError
,如果遇到错误,它将在true
上更改。因此,在error
之后-this.state.loginError
随true
一起返回(这也是我在console.log中看到的),但是在状态更改之后-我的函数loginError(target)
仍然不想启动。
请在下面查看我的代码和日志:
class LoginPage extends Component {
constructor(props) {
super(props);
this.state = {
navigate: false,
loginError: false,
}
}
handleSubmit = (e) => {
e.preventDefault();
axios.post('http://localhost:3016/auth/login', userLogin, {withCredentials: true})
.catch(err => {
this.setState({
loginError: true
});
console.log(this.state.loginError); // gives `true`
});
if (this.state.loginError) {
console.log('Error!') //does not work
loginError(target);
}
};
最佳答案
因为axios.post
是异步函数,因此首先触发您的if
条件,并在.catch
钩子之后触发。要解决此问题,请尝试在其他位置替换您的条件,例如在中