【发布时间】:2020-06-07 03:26:02
【问题描述】:
在我的用户注册页面上的反应应用程序中,我试图检查天气用户名是否已经存在或者我的代码是否存在
checkUserName = (e) => {
this.setState({username:e.target.value});
let username = this.state.username;
db.collection("users").doc(username).get()
.then((snapshot)=>{
if(snapshot.exists)
{
this.setState({usernameExistError:"show"}); *//this is classname of error div*
this.setState({isUsernameOk:false})
console.log(this.state.usernameExistError,this.state.isUsernameOk);
}
else
{
this.setState({usernameExistError:"hide"});
this.setState({isUsernameOk:true})
console.log(this.state.usernameExistError,this.state.isUsernameOk);
}
})
}
当我检查控制台时一切正常。但是问题是当我在输入中按下一个键时,状态用户名是空白的,当我输入第二个字母时,用户名状态会读取第一个字母 . 因此,仅当数据类似于“EXISTINGUSERNAME”+ SOME_KEY_PRESS 时才找到现有用户名 我该如何解决这个...提前谢谢
【问题讨论】:
-
仅供参考
setState是异步的,当您想立即查看 setstate 上的更新时,您需要使用回调,例如setstate({ key: updated_value},()=> console.log(this.state.key)),现在您可以立即看到状态更新。我希望这能解决您的问题。
标签: javascript reactjs event-handling onchange html-input