Не удается обновить массив в React Native - PullRequest
0 голосов
/ 11 февраля 2019

Я пытаюсь изменить состояние элемента в массиве.Я сделал то, что вы прокомментировали в предыдущем ответе, но когда я console.log обновляю массив, его число увеличивается!Это код

changeState = (i) => {
  console.log(this.state.selected)
  const array = [...this.state.selected];

  if (this.state.selected[i] === true) {
    array[i] = false
  } else {
    array[i] = true
  }

  this.setState({
    selected: array
  })

  console.log(array[i])
}

Когда я запускаю экран, я создаю выбранный массив со всеми значениями в false, затем при нажатии кнопки он отправляет индекс, используя «i», а затем массив вместо измененияот true до false или наоборот, массив только увеличивается в размере

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Код выглядит хорошо.Обратите внимание, что в JavaScript вам разрешено присваивать значение неопределенному индексу, который в настоящее время находится за пределами массива.Например:

var arr=[];
arr[2]="value";
// arr = [undefined,undefined,"value"];
// arr.length = 3

Так что я могу думать только о том, что changeState получает неправильный индекс (возможно, индекс больше, чем массив в вашем состоянии)

0 голосов
/ 12 февраля 2019

Это клон вашего массива.Вы не можете обновить его значения.

const array = [...this.state.selected];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...