因此,我尝试按条件运行该函数:如果catch方法中出现错误。

为此,我在组件状态下实现了this.state.loginError,如果遇到错误,它将在true上更改。因此,在error之后-this.state.loginErrortrue一起返回(这也是我在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钩子之后触发。要解决此问题,请尝试在其他位置替换您的条件,例如在中

10-06 00:44