@uzi_no_uzi

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

В состоянии есть свойство panelClassesActive, это объект, который содержит данные об активных элементах.

Есть функция changeClass, которая принимает в параметры ключ, который нужно поменять.

Как поменять состояние так, чтобы все элементы внутри объекта panelClassesActive остались прежними, но менялось лишь одно поле, которое передано аргументом?

Т.е., например я сделал changeClass('benefitsPanel');, и теперь в моём состоянии

panelClassesActive: {
    benefitsPanel: true //значение поменялось на противоположное,
},

Вот, что я наработал:

this.state = {
  panelClassesActive: {
    benefitsPanel: false,
  },
}

this.changeClass = function(changeKey) {

  console.log(1);

  this.setState({
    panelClassesActive: {
      ...this.state.panelClassesActive,
    }
  })

  console.log(this.state.panelClassesActive)

}
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
rockon404
@rockon404 Куратор тега React
Frontend Developer
toggleClass = className => {
  this.setState(state => ({
    panelClassesActive: {
      ...state.panelClassesActive,
      [className]: !state.panelClassesActive[className],
    },
  }));
};
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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