状态未在ReactJs中更新

时间:2020-03-01 20:57:19

标签: reactjs react-state-management

我试图在运行时更新状态,未显示任何错误,并且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);
  },

1 个答案:

答案 0 :(得分:0)

setState是异步的,当您在设置状态后记录状态时,react将在设置状态之前运行日志。您可以按以下方式运行设置状态同步:

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

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