@myskypesla

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

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

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

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

Делаю так:

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

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

Вопрос: как изменить только значение disabled?
  • Вопрос задан
  • 2873 просмотра
Решения вопроса 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}}));
}

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

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

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