【发布时间】:2020-11-17 13:32:21
【问题描述】:
我想在成功登录状态下更新我的“userSuccessfullLoggedIn”,但它不会更新。如果用户名和密码不正确,它会更新状态,但当用户名和密码正确时它不会更新我找不到问题,请帮助我。
import React, { Component } from "react";
import LoginResponse from "./LoginResponse";
class Login extends Component {
constructor() {
super();
this.state = {
username: "",
password: "",
loginStatus: "",
userSuccessfullLoggedIn: "",
};
}
onChange = (event) => {
this.setState({
[event.target.name]: event.target.value,
});
};
loginResponse = () => {
if (this.state.username === "jarvis" && this.state.password === "jarvis") {
console.log("Successfull");
this.setState({
loginStatus: true,
userSuccessfullLoggedIn: true,
});
sessionStorage.setItem("user", this.state.username);
this.props.history.push(`/welcome/${this.state.username}`);
} else {
console.log("Wrong");
this.setState({
loginStatus: false,
userSuccessfullLoggedIn: false,
});
}
};
render() {
return (
<div>
<div className="login-form">
<h1 className="text-center"> LOGIN </h1>
<div className="form-group">
<input
placeholder="Username"
className="form-control"
type="text"
name="username"
value={this.state.username}
onChange={this.onChange}
/>
</div>
<div className="form-group">
<input
placeholder="Password"
className="form-control"
type="password"
name="password"
value={this.state.password}
onChange={this.onChange}
/>
</div>
<div className="form-group">
<button className="btn btn-primary" onClick={this.loginResponse}>
LOGIN
</button>
</div>
<LoginResponse status={this.state.loginStatus} />
</div>
</div>
);
}
}
export default Login;
控制台
它正在进入 Success 块,但它没有将状态从 false 更新为 true
【问题讨论】:
-
setState 本质上是异步的,请回拨并检查您所获得的状态,即 this.setState({ loginStatus: true, userSuccessfullLoggedIn: true, }, () => { console.log (this.state.loginStatus); });
标签: javascript reactjs react-router react-state