使用字段组件设置对象内部的状态

时间:2020-01-13 13:24:01

标签: reactjs

我有一个处于这种状态的组件:

state = {
  data: {
   name: ...,
   place: ...,
   responsible: {
     name: ...,
     mail: ....
   }
 }
}

我有一个组件字段,该字段的onChange会随着事件更新状态:

handleOnSave = (id, data) => {
    if (this.state[id] !== data) {
      const newData = {
          ...this.state.data,
          [id]: data,
        };
       this.setState({data: newData})
    }
}

如果我想更改状态数据内的负责对象,该怎么办?我的意思是,通过此功能,我可以更改state = {place:'newPlace'},我需要更改一个对象:负责任

2 个答案:

答案 0 :(得分:0)

您要合并值。使用setState的回调重载版本

this.setState((state, props) => ({
    data: {
        ...state.data,
        responsible: data.data.responsible
    }
});

https://reactjs.org/docs/state-and-lifecycle.html

答案 1 :(得分:0)

您可以调用handleOnSave传递一个对象,例如: handleOnSave({name: 'name'})handleOnSave({responsible: {name: 'name'}})

handleOnSave = ({responsible, ...rest}) => {
  const newData = {
    ...this.state.data, ...rest,
    responsible: {
      ...this.state.data.responsible, ...responsible
    }
  };
  this.setState({data: newData});
}
相关问题