【问题标题】:setState didn't update the set value in React [duplicate]setState 没有更新 React 中的设置值 [重复]
【发布时间】:2020-10-15 22:02:31
【问题描述】:

这是我尝试更新状态值的代码。我无法弄清楚为什么我的状态没有更新。我在每一行代码中添加了所有相应的控制台值。


handleFilter=(event)=>
  {
    console.log(this.state.answerStatus) // Before update 'all'
    let val= event.target.value === "answered";
    console.log(val); // true or false
    this.setState({answerStatus:val});
    console.log(this.state.answerStatus); // 'all'
  }

【问题讨论】:

    标签: reactjs typescript react-state-management


    【解决方案1】:

    在 React 中 setState 是异步的,这意味着在您调用 setState 后不会立即修改状态值,这就是您从 console.log 获取旧值的原因。

    Why is setState in reactjs Async instead of Sync?

    React Docs

    handleFilter = (event) => {
        console.log(this.state.answerStatus) // Before update 'all'
    
        let val= event.target.value === "answered";
    
        console.log(val); // true or false
    
        this.setState({answerStatus:val}, () => {
           console.log(this.state.answerStatus);
        });
        
      }
    

    【讨论】:

      【解决方案2】:

      状态更新为async

      要在 setState 之后查看更新的值,请使用第二个参数,该参数采用回调函数并在那里发出控制台日志。

      handleFilter = (event) => {
        console.log(this.state.answerStatus); // Before update 'all'
        let val = event.target.value === "answered";
        console.log(val); // true or false
        this.setState({ answerStatus: val }, () =>
          console.log(this.state.answerStatus)
        );
      };
      
      

      【讨论】:

        猜你喜欢
        • 2020-07-26
        • 2018-02-06
        • 2019-07-07
        • 1970-01-01
        • 2022-12-23
        • 2020-03-03
        • 2019-06-14
        • 2021-11-11
        • 2018-04-14
        相关资源
        最近更新 更多