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

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

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


Как прописать setState чтобы изменить data.text.value.title?
  • Вопрос задан
  • 157 просмотров
Подписаться 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 намного короче, но суть та же.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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