在我的登录页面中,除了单击“登录”按钮外,我还希望使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();