我想在不改变数组长度的情况下,从React状态中的数组中移除元素。像这样使用delete
方法合适吗:
removeField = (index) => {
delete this.state.array[index];
};
如果不是,我该如何处理呢?我的实际解决方案取决于数组长度(也不确定它是否正确)。
发布于 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 }
})
};
发布于 2019-04-01 06:53:28
我这样做:
removeField = (index) => {
let arrCpy = {...this.state.array}
delete arrCpy[index]
this.setState({ array: arrCpy )}
};
首先,使用spead运算符创建数组的副本,然后删除副本中的索引,然后重新设置新数组的状态
发布于 2019-04-02 04:00:24
这里最简单的解决方案是像@Halt提到的那样在状态副本上使用delete方法,但是这可能不是最好的答案,因为它可能会导致一些意外的行为。最合适的解决方案是array.prototype.splice()方法-它可以用null替换删除的项,但是在我的示例中,它迫使我对子组件添加额外的限制,这使得它们不太灵活。
https://stackoverflow.com/questions/55446117
复制相似问题