【问题标题】:Cannot update array in React Native无法在 React Native 中更新数组
【发布时间】:2019-02-11 20:18:20
【问题描述】:

我正在尝试更改数组中某个项目的状态。我做了你对上一个答案的评论,但是当我 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,反之亦然,仅数组尺寸增加

【问题讨论】:

  • 你能创建一个 js fiddle 或一些演示吗?
  • 这一切都取决于i 是什么。可能 >= this.state.selected.length

标签: javascript reactjs react-native jsx


【解决方案1】:

这是您的阵列的克隆。你不能更新它的值。

const array = [...this.state.selected];

【讨论】:

    【解决方案2】:

    代码看起来不错。请注意,在 JavaScript 中,您可以在当前超出数组范围的未定义索引中分配值。 例如:

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

    所以我唯一能想到的是changeState 得到了错误的索引(可能是一个大于您所在州的数组的索引)

    【讨论】:

      猜你喜欢
      • 2020-02-15
      • 2021-01-23
      • 2019-03-27
      • 2022-01-22
      • 2021-08-31
      • 2023-01-25
      • 2020-09-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多