如何处理React.js嵌套状态?

时间:2018-04-04 19:53:03

标签: reactjs nested setstate

我需要在主要组件中使用嵌套状态。我想出了initialState我将用于reset功能。

constructor() {
  ...
  this.initialState = {
    ...
    employees: {
      manager: {
        name: 'Andrew',
        age: 27
      }
      developer: {
        name: 'David'
        age: 32
      }
    }
    ...
  };

  this.state = this.initialState;

但它并不适用于React。由于setState无法处理嵌套属性,因此this.statethis.initialState只是对同一对象的引用。我已经尝试了spread operatorObject.assign,最后遇到了immutability-helper

但我仍然无法理解如何在constructor中设置状态以及如何"重置"后来该州的employees部分。

state的其他属性是平的。

1 个答案:

答案 0 :(得分:1)

要设置初始状态,只需使用

this.state = {
    employees:
      manager: {
        name: 'Andrew',
        age: 27
      }
      developer: {
        name: 'David'
        age: 32
      }
}

然后使用setState更改状态对象。

要对状态内的嵌套对象进行更改,我们通过创建一个新对象(嵌套员工对象的副本)来利用对象解构。我们可以对新创建的employee对象进行更改,然后使用this.setState

保存
resetEmployee() {
    let employee = {...this.state.employee}
    employee.someProperty = someNewValue 
    this.setState({employee}) 
}

您可以进一步正确地抽象它,但该示例用于更新状态中的嵌套对象。

对于深层副本,我们会查看JSON.stringify()