使用delete运算符直接从React状态删除元素

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (211)

我想从React状态内的数组中删除元素而不更改数组长度。使用这样的delete方法是否合适:

removeField = (index) => {
  delete this.state.array[index];
};

如果没有,我应该如何处理?我的实际解决方案取决于数组长度(不确定它是否正确)。

提问于
用户回答回答于

我是这样做的:

    removeField = (index) => {
      let arrCpy = {...this.state.array}
      delete arrCpy[index]
      this.setState({ array: arrCpy )}
    };

首先使用spead运算符复制数组,然后删除副本中的索引,然后在状态中设置新数组

用户回答回答于

如果您因任何原因需要保存array.length:

removeField = (index) => {
  this.setState((prevState) => {
     return {...prevState, array: prevState.array.map((item, id) => id === index ? null : item }
   })
};

扫码关注云+社区

领取腾讯云代金券