@newhacke

Почему стэйт не обновляется?

Проблема с отправкой данных в localStorage.
Пытаюсь во внутреннем стейте поменять данные, чтобы потом в этой же функции отправить их в localStorage. Для дальнейших действий. Но приходят пустые строки.

state = {
    searchWord: "",
    newstyle: false,
    modal2Visible: false,
    inputValue: 1,
    favouritesMas: {
      id: "",
      favTitle: "",
      favName: "",
    },
  };

onChange = (e) => {
    this.setState({ searchWord: e.target.value });
  };

  onChangeNamevalue = (e) => {
    this.setState({ favName: e.target.value });
  };

addFav = (e) => {
    e.preventDefault();

    this.setState((prevState) => {
      let favouritesMas = Object.assign({}, prevState.favouritesMas);
      favouritesMas.favTitle = this.state.favouritesMas.favName;
      favouritesMas.favName = this.state.favouritesMas.searchWord;
      return { favouritesMas };
    });

    localStorage.setItem(
      this.state.favName,
      JSON.stringify(this.state.favouritesMas)
    );

    this.handleCancel();
  };
  • Вопрос задан
  • 208 просмотров
Решения вопроса 1
@McBernar
Потому что запись в стейт — не синхронная операция. Добавление в локалсторадж происходит раньше записи в стейт.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@no-taktik
Можно перенести сохранение в localStorage во второй аргумент setState
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы