H5W3
当前位置:H5W3 > 问答 > 正文

Removing element from array in component state

I am trying to find the best way to remove an element from an array in the state of a component. Since I should not modify the this.state variable directly, is there a better way (more concise) to remove an element from an array than what I have here?:

  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
})
},

Thank you.

updated

This has been updated to use the callback in setState. This should be done when referencing the current state while updating it.

Answer

The cleanest way to do this that I’ve seen is with filter:

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

本文地址:H5W3 » Removing element from array in component state

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址