Javascript 我试图更新状态,但它';它不工作了
我想在成功登录状态下更新我的“userSuccessfullLoggedIn”,但它不会更新。如果用户名和密码不正确,它会更新状态,但如果用户名和密码为真,它不会更新。我找不到问题,请帮助我Javascript 我试图更新状态,但它';它不工作了,javascript,reactjs,react-router,react-state,Javascript,Reactjs,React Router,React State,我想在成功登录状态下更新我的“userSuccessfullLoggedIn”,但它不会更新。如果用户名和密码不正确,它会更新状态,但如果用户名和密码为真,它不会更新。我找不到问题,请帮助我 import React, { Component } from "react"; import LoginResponse from "./LoginResponse"; class Login extends Component { constructor(
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;
import React,{Component}来自“React”;
从“/LoginResponse”导入LoginResponse;
类登录扩展组件{
构造函数(){
超级();
此.state={
用户名:“”,
密码:“”,
登录状态:“”,
userSuccessfullLoggedIn:“”,
};
}
onChange=(事件)=>{
这是我的国家({
[event.target.name]:event.target.value,
});
};
loginResponse=()=>{
if(this.state.username==“jarvis”&&this.state.password==“jarvis”){
console.log(“成功”);
这是我的国家({
罗根斯塔斯:没错,
userSuccessfullLoggedIn:true,
});
sessionStorage.setItem(“用户”,this.state.username);
this.props.history.push(`/welcome/${this.state.username}`);
}否则{
控制台日志(“错误”);
这是我的国家({
loginStatus:false,
userSuccessfullLoggedIn:false,
});
}
};
render(){
返回(
登录
登录
);
}
}
导出默认登录;
控制台
它将进入成功块,但不会将状态从false更新为true设置状态本质上是异步的,请回拨并检查您得到的状态,即
this.setState({ loginStatus: true, userSuccessfullLoggedIn: true, }, () => {
console.log(this.state.loginStatus);
});
适用于我:setState本质上是异步的,请回调并检查您得到的状态,即:this.setState({loginStatus:true,userSuccessfullLoggedIn:true,},()=>{console.log(this.state.loginStatus);});谢谢你的帮助。现在我明白为什么它不更新状态了。