Hi guys I have a problem and from start I will mention that I already tried thisand this
My situation is as follows. I have API, that sends me
Root is in the component state!
Root: {
  RootVal1: {
    Prop1: '',
    Prop2: '',
    Prop3: '',
  }
  RootVal2: [
    PropObj1: {
      NestedProp1: '',
      NestesPropObj: {
        NestedEvenMoreProp1: '',
        NestedEvenMoreProp2: '',
        NestedEvenMoreProp3: ''
      }
    },
    PropObj2: {
      NestedProp1: '',
      NestesPropObj: {
        NestedEvenMoreProp1: '',
        NestedEvenMoreProp2: '',
        NestedEvenMoreProp3: ''
      }
    },
    PropObj3: {
      NestedProp1: '',
      NestesPropObj: {
        NestedEvenMoreProp1: '',
        NestedEvenMoreProp2: '',
        NestedEvenMoreProp3: ''
      }
    },
  ]
}How can I update Prop1, Prop2, Prop3, NestedEvenMoreProp1, NestedEvenMoreProp2, NestedEvenMoreProp3 with setState?
The last constraint is that  I cannot change the name of root(i cannot rename it to newRoot etc.)
What I have tried is to call this function:
  /**
   * @summary update state using immutable object
   * @param {Object} name of key and value for update
   * @returns {string} Promise that returns
   */
  updateStateHelper = target => new Promise((resolve) => {
    const updatedState =
      update(this.state[target.name], { $merge: { [target.name]: target.value } });
    this.setState(prevState => ({
      ...prevState,
      updatedState,
    }), () => resolve(this.state[target.name]));
  });As so:
// data[0] and data[1] is just copy of RootVal2 and RootVal1, with changed values. 
data[0]
data[1]
const root = Object.assign({}, this.state.root);
root.RootVal2 = [...data[0].RootVal2];
root.RootVal1 =  {...data[1]};
//Here root displays edited 
console.log(root);
this.updateStateHelper({name: 'root', value: root,})
  .then(() => {
    //Here root displays without the edit
    console.log(this.state.root);
    resolve('Success');
  }); 
    