我目前的状态是这样的:

state = { items : [{id: 1, text: 'test words'}, {id: 2, text: 'another test'}]

这是我从数组中删除对象的功能,试图避免改变状态。
handleRemove(passedInId) {

  const myItems = this.state.items

  const newArray = myItems.filter(item => item.id !== passedInId)

  this.setState(prevState => ({
    items: prevState.items = newArray
  }))

  console.log('handle remove runned', passedInId, myItems, newArray)

}

它可以完美工作,但是在继续生活之前想知道它是否不是反模式

非常感谢!!

最佳答案

您的功能几乎是正确的,并且您有正确的想法。在您的情况下,无需使用带有mutator函数的setState版本,只需执行以下操作:

handleRemove(passedInId) {

  const myItems = this.state.items

  const newArray = myItems.filter(item => item.id !== passedInId)

  this.setState({
    items: newArray
  })

  console.log('handle remove runned', passedInId, myItems, newArray)

}

老实说,这很简单,一个类轮就能做到:
handleRemove(passedInId) {
  this.setState({items: this.state.items.filter(item => item.id !== passedInId)})
}

09-16 18:33