Изменение подобласти состояния в ReactJS - PullRequest
0 голосов
/ 31 марта 2020

Обновление состояния в ReactJS не имеет большого значения. Но кто-нибудь когда-нибудь испытывал обновление подсобства состояния в ReactJS?

Как я хочу обновить third с first.second.third, но когда я на самом деле это делаю, это обновляет состояние, но отбрасывает остальные элементы в состоянии.

Я придерживаюсь того же синтаксиса, который доступен для inte rnet. Прилагается мой код и вывод. Я делаю что-то не так? Пожалуйста, дайте мне знать, так как это единственная блокировка в обновлении объекта анализа при изменении полей ввода.

testing(a,b){
    console.log(a)
    console.log(b)
  this.state = {...this.state.analysis,
    first: {
      second: {
        [a]: b
      }
    }
  }
  console.log(this.state.first)

Ссылка, которую я использую:

http://react-experiments.herokuapp.com/state-flow

Ответы [ 2 ]

0 голосов
/ 31 марта 2020

вы можете получить переменную состояния, сделать ее новой переменной и изменить значение состояния внутри

, а затем установить новую переменную в состояние

this.state = {
    fields: {
      second: {
        third: "test"
      }
    }
}

yourFunc() {
  const fields = this.state.fields;
  fields.second.third = "test2";
  this.setState({
    fields: fields
  })
}

render() {
  console.log("this.state.fields = ", this.state.fields);
}

0 голосов
/ 31 марта 2020

Мне неясно, что здесь означает third, но в отношении обновлений вложенного состояния обычно приходится делать глубокую копию, а затем обновлять значения в этой копии.

К сожалению, код для этого достаточно многословен, поэтому мы используем такие помощники, как immutability-helper , чтобы упростить его. Посмотрите readme этой ссылки, там также есть примеры того, как сделать глубокое копирование без использования этой библиотеки.

...