我想在react中删除一个对象的对象,我打算做的是获取当前状态并将其分配给变量,更改该变量,使用setState将已更改的变量分配给state。喜欢这个
constructor() {
super()
this.state = {
obj: {
"0": {
something: 123
},
"1": {
another_thing: 'abc'
}
}
}
}
deleteOneObj(index) {
let newObjState = this.state.obj[index]
delete newObjState
}
render() {
return(<h1>hello<br />
<button onClick={()=>this.deleteOneObj(1)}>
delete one obj
</button>
</h1>)
}
但删除newObjState似乎不起作用。
答案 0 :(得分:2)
尝试这样的事情:
deleteOneObj(index) {
let newObjState = JSON.parse(JSON.stringify(this.state.obj))
delete newObjState[index]
this.setState({obj: newObjState})
}
答案 1 :(得分:1)
我更喜欢使用Object.assign,它更具可读性,并且还创建了一个对象的新引用:
deleteOneObj(index) {
let newObjState = Object.assign({}, this.state.obj)
delete newObjState[index]
this.setState({obj: newObjState})
}