2017-02-07 26 views
0

更新関数でthis.setProps(myProperty + 1)を呼び出す前と後にconsole.log(myProperty)を実行すると、getDafaultPropsから返されるmyPropertyという整数変数があると仮定して、コンソールはmyPropertyと同じ値をログに記録します。関数の終了後にプロパティが更新され、次にmy関数を呼び出すとmyPropertyは新しい値になりますが、誰かが理由を知っていますか、なぜthis.setPropsが呼び出された直後にmyPropertyが?this.setPropsは自動的に更新されません

お返事いただきありがとうございます。

getDefaultProps: function() { 
    return { colorIndex: -1 }; 
}, 
update: function() { 
    console.log("clicked and index is " + this.props.colorIndex); //returns -1 
    this.setProps({colorIndex: this.props.colorIndex + 1}); 
    console.log("index is now " + this.props.colorIndex); /still returns -1 
}, 
+0

値の変更を伴う変数がある場合は、 'setState'と' this.state'オブジェクト –

+0

を使用してください。それは非同期関数なので、コンソールログを更新する時間がありませんでしたか?ちょっとした考え。 – woodwick

+1

なぜ、非推奨の 'setProps'を最初に使用していますか?私はそれが現在のReactにあるとは思わない。 (確認、0.14で削除、https://github.com/facebook/react/pull/5570)いずれにせよ、私は 'setState'のようにすぐには起こらないと思います。 http://stackoverflow.com/a/25142742/438992も参照してください。 2年以上前。 –

答えて

1

以下の関連するコードは、どちらもSETSTATEとsetPropsはすぐに変化させません - 反応のドキュメントから:

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

はSETSTATE()すぐにthis.state変異させるが、 保留状態を作成していません遷移。この メソッドを呼び出した後this.stateにアクセスすると、潜在的に既存の値が返される可能性があります。 setStateへの呼び出しの同期操作を保証する はなく、パフォーマンス向上のために を呼び出してもよいでしょう。

更新メソッドはsetStateを呼び出す必要があり、レンダリングメソッドは更新された状態に基づいて実行されます。

+0

特定のドキュメントを参照してくれてありがとう。 – woodwick

関連する問題