2016-06-20 8 views
3

componentWillUpdateが呼び出されたとき、私は最新の状態、すなわちthis.stateの状態を読み取ることができたと思いました。しかし、私は文書をより詳細にチェックした後、私が間違っていることに気付きました。事実は、this.stateの後にcomponentWillUpdateが呼び出されたとしても、それは依然として「古い」状態を読み取ります。このデザインのポイントは何ですか? componentWillUpdateはどのようにして便利ですか? this.setStateへの呼び出しが何をするかでレンダリングする直前に呼び出され、:componentWillUpdate古い状態を読み取る

+0

@ user120242驚いたことに、 'componentWillUpdate'は古い状態を読み込みますが、' render'は最新の状態を読み込みます。それは 'componentWillUpdate'のように見えます。 – Guigui

+0

は更新されます。それは秒で更新されます。その時点での現在の状態は、(実際にはまだ更新されていないため)以前の状態になります。次の状態を受け入れることができます。その状態は、関数内のパラメータとして遷移し、遷移先を確認することができます。レンダリングでは更新され、レンダリングによって新しいデータが表示されます。 –

答えて

4

componentWillUpdateが反応ライフサイクルメソッド(https://facebook.github.io/react/docs/component-specs.html#lifecycle-methodsをここで参照)です。それは古い状態があなたにまだ利用可能である理由であり、あなたがこのサイトの範囲を超えていることは、imho(アクションを記録するAPI呼び出しを以前の状態またはすべての種類のもの)。

実際にcomponentWillUpdateは渡されたオブジェクトとしてnextStateを受け取るため、必要に応じてそこにアクセスできるようになります。

レンダリング後に状態を取得する場合は、componentDidUpdateを調べて、古い状態にする必要があります。

+0

私が驚いているのは、最新の状態をレンダリングしている間にcomponentWillUpdateが古い状態を読み取ったことです。これはcomponentWillUpdateがユーザーの状態に触れることを期待していないようです。もしそうなら、私はこのライフサイクルメソッドがどのように役立つか分かりません(私はあなたの例を理解できません) – Guigui

+0

ありがとう! 'nextProps'と' nextState'は実際には 'componentWillUpdate'で利用可能です。 – Guigui

+0

新しい状態が設定される前にComponentWillUpdateが呼び出されている、それが目的です。私は、あなたが "componentWillUpdateはユーザーが状態に触れることを期待していません"という意味を混同しています。状態/小道具が変更された場合にのみ呼び出されます。レンダリングがすべてである前に呼び出されたばかりです。 –

関連する問題