Задать вопрос
madrogalo
@madrogalo
Кратко о себе

Как изменить state в React?

Есть такой state , в нем многомерный объект
state = {
			data: {
				name: {value: name},
				mail: {value: email},
				text: 
					{value: { 
						title: subtitle,
						subtitle: subtitle,
						}
					},
			}
		}


Как прописать setState чтобы изменить data.text.value.title?
  • Вопрос задан
  • 160 просмотров
Подписаться 1 Средний 1 комментарий
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Javascript.ru
    Курс по React
    5 недель
    Далее
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
Решения вопроса 2
hzzzzl
@hzzzzl
this.setState(state => {
  const newState = { ...state }
  newState.data.text.value.title = 'new title'
  return newState
})
Ответ написан
freislot
@freislot
Frontend-разработчик
так и менять
this.setState({
  data: {
    text: {
      value: {
        title: 'нужный тайтл'
      }
    }
  }
})


setState сравнит состояния и смёржит их, в итоге тайтл изменится а остальные данные останутся как были.


Извиняюсь не проснулся)) правильно будет так конечно-же

this.setState(prevState => ({
      data: {
        ...prevState.data,
        text: {
          ...prevState.data.text,
          value: {
            ...prevState.data.text.value,
            title: '1234'
          }
        }
      }
}))


Зачеркнул первый вариант ответа, для примера как делать НЕ нужно)

https://jsfiddle.net/2xe7vpa8/1/

суть в общем такая, что мы spread'ом копируем состояние объекта и изменяем нужный ключ. Ответ hzzzzl намного короче, но суть та же.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
IT ATLAS Москва
от 200 000 до 250 000 ₽
ITK academy Казань
от 50 000 до 90 000 ₽