删除基于key的嵌套对象

时间:2018-01-17 13:17:53

标签: javascript reactjs ecmascript-6

我想在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似乎不起作用。

2 个答案:

答案 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}) 
}