Значение состояния React Component не обновляется при вызове setState для свойства jsonObject. - PullRequest
0 голосов
/ 08 октября 2018

Я работаю над тремя свойствами объекта JSON, который возвращает логические значения.

updateChange=(value) =>{
    //Making copy of existing json Object
    let newState = JSON.parse(JSON.stringify(this.state.mainValue));
    // chaning property of cellular over here
    newState.cellular = value;
    console.log(newState);
    this.setState({mainValue:newState});

    //I tried setState in many different ways. But Component is not changing state value 

    console.log(this.state.mainValue)
};

Я обнаружил, почему это происходит.Я использую getDerivedStateFromProps в этом компоненте, чтобы посмотреть изменения, внесенные родителем для обновления значений.Это позволяет избежать изменений, внесенных в состояние ребенка.Поэтому я создал состояние под названием «предыдущее состояние», чтобы сравнить предыдущие реквизиты и представить реквизиты от родителя для визуализации.Это позволяет избежать обновления компонента при изменении значений локального состояния.

 static getDerivedStateFromProps(propsnow,state){

  if(state.previous !== propsnow.detailSwitches){
   return{
        previous :propsnow.detailSwitches,
        cellular: propsnow.detailSwitches.cellular,
        wifi1: propsnow.detailSwitches.wifi1,
        wifi2: propsnow.detailSwitches.wifi2
   };

    }
    return null;
 }

Любые примеры или рекомендации могут быть полезны.Спасибо

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Вы можете попробовать это

  this.setState(prevState => ({
    mainValue: {
       ...prevState.mainValue,
      cellular: value
  }}))

Это неизменный способ обновления состояния.

0 голосов
/ 08 октября 2018

Вы устанавливаете ТОЛЬКО переменную mainValue вашего состояния в значение newstate, разве вы не должны обновлять все состояние?

this.setState({...newState})
...