首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用delete运算符直接从React状态中删除元素

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

Stack Overflow用户
提问于 2019-04-01 06:42:28
回答 3查看 480关注 0票数 0

我想在不改变数组长度的情况下,从React状态中的数组中移除元素。像这样使用delete方法合适吗:

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

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

EN

回答 3

Stack Overflow用户

发布于 2019-04-01 06:49:51

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

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

Stack Overflow用户

发布于 2019-04-01 06:53:28

我这样做:

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

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

票数 0
EN

Stack Overflow用户

发布于 2019-04-02 04:00:24

这里最简单的解决方案是像@Halt提到的那样在状态副本上使用delete方法,但是这可能不是最好的答案,因为它可能会导致一些意外的行为。最合适的解决方案是array.prototype.splice()方法-它可以用null替换删除的项,但是在我的示例中,它迫使我对子组件添加额外的限制,这使得它们不太灵活。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55446117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档