Состояние не обновляется в 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);
  },

person Paul Gudu    schedule 01.03.2020    source источник


Ответы (1)


setState является асинхронным, и когда вы регистрируете свое состояние после его установки, реакция запускает ваш журнал перед установленным состоянием. Вы можете запустить синхронизацию состояния установки, как показано ниже:

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

Теперь вы можете видеть обновленное состояние в консоли, потому что ваш seState выполняет синхронизацию.

person Mahyar Fard    schedule 01.03.2020
comment
похоже, это сработало, но обновленное состояние не используется, когда я пытаюсь загрузить из состояния ``` ‹SkiDayList days={this.state.allSkiDays} filter={} /› ``` по-прежнему загружает только начальное состояние . - person Paul Gudu; 02.03.2020
comment
Используйте синтаксис es5 для начального состояния, например: getInitialState: function() {return yourState}. Вы использовали синтаксис es6 для начального состояния, но для создания ReactClass используется синтаксис es5. - person Mahyar Fard; 02.03.2020