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

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

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


Как прописать setState чтобы изменить data.text.value.title?
  • Вопрос задан
  • 159 просмотров
Подписаться 1 Средний 1 комментарий
Решения вопроса 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 Нижний Новгород
от 80 000 до 120 000 ₽
ITK academy Воронеж
от 50 000 до 90 000 ₽