我目前的状态是这样的:
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)})
}