从处于组件状态的数组中删除元素

2022-08-30 04:12:29

我试图找到在组件状态下从数组中删除元素的最佳方法。由于我不应该直接修改变量,那么有没有比我在这里更好的方法(更简洁)从数组中删除元素?this.state

  onRemovePerson: function(index) {
    this.setState(prevState => { // pass callback in setState to avoid race condition
      let newData = prevState.data.slice() //copy array from prevState
      newData.splice(index, 1) // remove element
      return {data: newData} // update state
    })
  },

谢谢。

更新

这已更新为使用 setState 中的回调。在更新当前状态时引用当前状态时,应执行此操作。


答案 1

我所见过的最干净的方法是:filter

removeItem(index) {
  this.setState({
    data: this.state.data.filter((_, i) => i !== index)
  });
}

答案 2

你可以使用 react-addons-update 中的 update() immutability 帮助器,它有效地在引擎盖下做同样的事情,但你正在做的事情很好。

this.setState(prevState => ({
  data: update(prevState.data, {$splice: [[index, 1]]})
}))