Задать вопрос
@myskypesla

Как заменить свойство объекта внутри state?

Есть компонент и внутри него:

this.state = {
  sms: {
    code: null,
    startTime: 60,
    disabled: false,
  },
};

Необходимо изменить только значение disabled внутри объекта sms.

Делаю так:

someFunction = () => {
  this.setState({...this.state.sms, disabled: true});
}

И происходит полная перезапись объекта sms.

Вопрос: как изменить только значение disabled?
  • Вопрос задан
  • 2904 просмотра
Подписаться 2 Простой Комментировать
Решения вопроса 1
sharpfellow
@sharpfellow
Front
Надо переписать объект sms

someFunction = () => {
      const {sms} = this.state;
      sms.disabled = true;
      this.setState({sms});
}

Таким образом вы обновите поле disabled в sms
--------
Или еще так
someFunction = () => {
      this.setState({sms: {...this.state.sms, disabled: true}});
}

--------
еще так можно
someFunction = () => {
      this.setState(prevState=>({sms: {...prevState.sms, disabled: true}}));
}

Последний вариант самый устойчивый к коллизиям, связанным с изменением стейта в других места программы
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы