首页 > 解决方案 > setState 没有更新 React 中的设置值

问题描述

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


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

标签: reactjstypescriptreact-state-management

解决方案


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

为什么 reactjs Async 中的 setState 而不是 Sync?

反应文档

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

推荐阅读