2016-09-13 5 views
0

this.setState({ foo: true })を呼び出してすぐにthis.state.fooをチェックしても、新しい値trueが返されない場合があります。reactjs:setState()はすぐにthis.stateを変更しますか?

私は、これが起こった正確な場合を知ることができません。同じ反復でに複数回呼び出すと、わかりません。だから私は疑問に思う:

reactjsは、次のことを保証しますいつもは機能しますか?

this.setState({ foo: true }); 

console.log(this.state.foo); 
// => prints true 
+0

'this.setState'は非同期操作ですので、保証はありません。彼らは公式文書でこれを述べている。 – ctrlplusb

+2

https://facebook.github.io/react/docs/component-api.html#setstate – ctrlplusb

答えて

5

reactjsは、次のことが常に動作することを保証していますか?

いいえ、setState非同期方法です。、あなたはそれが非同期で完了だ

this.setState({ foo: true },() => { 
    console.log(this.state.foo); 
}); 
0

2番目の引数としてコールバックを使用する必要がある状態を更新取得したい場合。したがって、メソッド内で更新が表示されないことがあります。それをcomponentDidUpdateでチェックしてください。 か、このように、SETSTATEコールバックで結果を見ることができます:

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

console.log(this.state.name); 

}); 
関連する問題