首页 > 解决方案 > 状态未在 ReactJs 中更新

问题描述

我在运行时尝试更新状态,没有显示错误,console.log输出显示状态尚未更新。任何人都可以帮助找出问题所在吗?

这是应该更新状态的函数。

  addDay(newDay) {
    console.log(this.state.allSkiDays);
    this.setState({
      allSkiDays: [...this.state.allSkiDays, newDay]
    });
    console.log(this.state.allSkiDays);
  },

我在哪里声明了初始状态


export const App = createReactClass({
  getInitialState() {
    return {
      allSkiDays: [
        {
          resort: "Skaq Valley",
          date: "1 / 2 / 2020",
          powder: true,
          backcountry: false
        }
      ]
    };

    this.addDay = this.addDay.bind(this);
  },

标签: reactjsreact-state-management

解决方案


setState 是异步的,当您在设置状态后记录状态时,反应会在设置状态之前运行您的日志。您可以运行设置状态同步如下:

 addDay(newDay) {
     console.log(this.state.allSkiDays);
     this.setState({
          allSkiDays: [...this.state.allSkiDays, newDay]
      }, ()=>{
          console.log(this.state.allSkiDays)
      });
 }

现在您可以在控制台中看到更新的状态,因为您的 seState 运行同步。


推荐阅读