setState没有更新React中的设置值

时间:2020-06-25 12:35:04

标签: reactjs typescript react-state-management

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


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'
  }

2 个答案:

答案 0 :(得分:2)

在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);
    });
    
  }

答案 1 :(得分:1)

状态更新为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)
  );
};