2017-08-10 17 views
0

私は2D配列を持っており、それをcomponentWillReceivePropsで更新する必要がありますが、更新されません。setState from 2D array - ReactJS

これは私の状態です。

this.state={ 
      conditionRaw:[[]] 
     } 

これはcomponentWillReceivePropsメソッドです。

componentWillReceiveProps(nextProps){ 
     let rules = {conditionRaw:[[]]}; 
     if (nextProps.rootObject._id !== ""){ 
      rules["conditionRaw"] = nextProps.rootObject.conditionRaw 
      this.setState({conditionRaw: rules.conditionRaw}) 
      console.log("DENEMEBİRLKİ", this.state.conditionRaw) 
     } 

    } 

私のnextPropsはいっぱいですが、私はsetStateで失敗していると思います。

+0

'this.setState({conditionRaw:rules.conditionRaw}、()=> {にconsole.log(this.state.conditionRaw);});'これは何と言っていますか? – Nocebo

+0

空の配列が返される@Nocebo –

+1

[setStateメソッドを呼び出すと状態がすぐに変更されないのはなぜですか?](https://stackoverflow.com/questions/42593202/why-calling-setstate-method-doesnt-mutate -the-state-immediately) –

答えて

1

あなたのコンソールログ:setState()が非同期であるため、

console.log("DENEMEBİRLKİ", this.state.conditionRaw) 

は、誤解を招くかもしれません。代わりにこれを試してみてください:

this.setState({conditionRaw: rules.conditionRaw},() => {console.log(this.state.conditionRaw);}); 
+0

うわー、それはすぐに満たされて返されます。つまり、私は状態を正常に更新しました。 –

+0

ええ、 'setState'は非同期です。常にこのコールバック関数を使用してwheterをチェックするかどうかを変更した – Nocebo

+0

ありがとう!今あなたの答えに印を付けることはできません。 10分後、私はそれをやります。 –