Reactjs 使用Field Component设置内部有对象的状态

Reactjs 使用Field Component设置内部有对象的状态,reactjs,Reactjs,我有一个具有此状态的组件: state = { data: { name: ..., place: ..., responsible: { name: ..., mail: .... } } } 我有一个组件字段,一旦更改它,就会用事件更新状态: handleOnSave = (id, data) => { if (this.state[id] !== data) { const newData = {

我有一个具有此状态的组件:

state = {
  data: {
   name: ...,
   place: ...,
   responsible: {
     name: ...,
     mail: ....
   }
 }
}
我有一个组件字段,一旦更改它,就会用事件更新状态:

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

如果我想更改状态数据中的责任对象,我该如何处理?我的意思是,使用这个函数我更改state={place:'newPlace'},我需要更改一个对象:responsible

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

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

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

handleOnSave=({responsible,…rest})=>{
常数newData={
…this.state.data,…rest,
负责人:{
…this.state.data.responsible,…responsible
}
};
this.setState({data:newData});
}

使用
this.setState()
,例如:
this.setState({place:'newPlace'})Lol,我这样做了,但我没有粘贴。我用属性上的新值设置state,但当我必须在state内部编辑责任对象时,如何自动执行此操作?如何检查我更改的字段是否为责任字段?