在我的登录页面中,除了单击“登录”按钮外,我还希望使ENTER键的工作有所不同,因此我将按钮的类型设置为“ submit”,并将形式指定为“ onSubmit”,如下所示:

<Button onClick={(event) => this.handleLogin(event)}>{loginTextElement}</Button>




<Button type="submit">{loginTextElement}</Button>


我现在也有这个:

<form onSubmit={(event) => this.handleLogin(event)}>


但是我发现我的方法handleLogin看起来像这样:

const signedIn = await API.authenticate(this.state.email, this.state.password);

alert("this is displayed immidiately with onSubmit, but with onClick it waits until signedIn is set")

if(signedIn==API.constants.ADMIN || signedIn==API.constants.CUSTOMER){
    console.log("signedin was admin or customer")
    this.setState({signedIn: signedIn})
}else{
    this.setState({loginPressed:false, showError:true})
}


不再等待constsignedIn的设置,而是继续执行代码,这导致了一些非常奇怪的行为,并且无法登录。

最佳答案

this.handleLogin中,您需要防止表单提交时的默认行为,即提交数据。在handleLogin中尝试:

event.preventDefault();

09-20 22:08