2016-08-26 17 views
2

親コンポーネントが受け取った新しいプロップでコンポーネントの状態を更新しようとしています。リアクションでcomponentWillReceivePropsに状態を設定できません

しかし、setStateの呼び出しは期待通りに機能していないようです。

私はcomponentWillReceivePropsがコンポーネントを再レンダリングしないことを理解していますが、setState呼び出しを許可していないようです。

私が間違っていると思われるアイデアはありますか?

コード:

componentWillReceiveProps (nextProps) { 
    this.setState({name: nextProps.site.name}); 
    console.log(nextProps.site.name); // logs the updated name 
    console.log(this.state.name); // logs the old name, even after presumably being set again 
} 

答えて

4

それは非同期で行われています。したがって、メソッド内で更新が表示されないことがあります。それをcomponentDidUpdateでチェックしてください。

+0

おかげで、goldbulletを!私はReactでしばらく働いていましたが、コンポーネントのライフサイクルが時々困惑していました。 –

2

あなたは、このように、setStateコールバックで結果を見ることができます:

this.setState({name: nextProps.site.name} ,()=>{ 

console.log(this.state.name); 

}); 
+0

これは素晴らしいヒントです!ありがとう、Alireza! –

関連する問題