Задать вопрос
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 комментарий
Помогут разобраться в теме Все курсы
  • Нетология
    Frontend-разработка на React
    10 недель
    Далее
  • ProductStar
    React: отточите навыки интерфейсной разработки
    6 недель
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
Решения вопроса 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 ₽
ITK academy Екатеринбург
от 50 000 до 90 000 ₽
от 250 000 до 300 000 ₽