我想做什么
我希望创建一个开关功能,允许用户通过将复选框添加到数组(我的 state 对象)或如果它们已经存在,则从数组中删除它们。
我期望发生的事情
使用以下代码,如果复选框不在所选数组中,则应将其添加。如果它已经存在,则删除它:
if (this.state.selected.indexOf(rowNumber) == -1) {
let tempState = this.state.selected
tempState.push(rowNumber)
this.setState({
selected: tempState
})
} else if (this.state.selected.indexOf(rowNumber) > -1 ){
let tempIndex = this.state.selected.indexOf(rowNumber)
let tempState = JSON.parse(JSON.stringify(this.state.selected))
tempState = tempState.splice(tempIndex, 1)
this.setState({
selected: tempState
})
}
我的状态对象是一个简单的数组。
实际发生的情况
当splice激活时,它会移除先前点击的元素而不是我当前正在点击的元素。
我想知道为什么它不只是选择/取消选择当前点击的复选框。谢谢!
编辑:在下面已解决!
这里是具有工作示例的链接:https://repl.it/@yoursweater/MemorableJitteryAustraliancurlew
tempState.push(rowNumber)
不行,因为你直接修改了状态。 - Giorgi Moniava