我正在尝试更新状态,但它不起作用[重复]

Posted

技术标签:

【中文标题】我正在尝试更新状态,但它不起作用[重复]【英文标题】:I am trying to update the state but it's not working [duplicate] 【发布时间】: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

【问题讨论】:

为我工作:codesandbox.io/s/flamboyant-chaum-542c6?file=/src/App.js setState 本质上是异步的,请回拨并检查您所获得的状态,即 this.setState( loginStatus: true, userSuccessfullLoggedIn: true, , () => console.log (this.state.loginStatus); ); 【参考方案1】:

setState 本质上是异步的,请回拨并检查您所获得的状态,即

this.setState( loginStatus: true, userSuccessfullLoggedIn: true, , () => 
 console.log(this.state.loginStatus); 
);

【讨论】:

感谢您的帮助。现在我明白为什么它没有更新状态了。

以上是关于我正在尝试更新状态,但它不起作用[重复]的主要内容,如果未能解决你的问题,请参考以下文章

我正在尝试折叠 onclick 方法上的导航栏,但它不起作用

我正在尝试在列表中找到所有匹配的答案,但它不起作用[重复]

PDO SQL 我正在尝试将我的 SQL 查询设置为检查多个列,但它不起作用 [重复]

SYMFONY 5 - 我尝试将 HTML 代码放在 mysql 中,但它不起作用 [重复]

我正在使用 Jena 导入 skos 词库,但它不起作用 [重复]

我正在尝试使用 Elementor Typography Control。但它不起作用