関数内では、常にsomeState
を設定する必要があり、condition
がtrueの場合はsomeOtherState
に設定する必要があるとします。1つのsetState呼び出しに反応し続けますか?
this.setState({ someState });
if (condition) {
this.setState({ someOtherState });
}
それともこれを:
それはこのようにそれを行うことが望ましいですか?私が反応知っ
if (condition) {
this.setState({ someState, someOtherState });
} else {
this.setState({ someState });
}
が立て続けにsetState
を呼び出すと、通常は再レンダリングを生じないように最適化されています。しかし、その動作は保証されているのか、コードはそのような仮定をしなければならないのでしょうか?
など。固定時間間隔で再レンダリングして動作すると仮定します。最初のsetState
がそのインターバルブロックが終了する直前に呼び出された場合、2番目のsetState
は再レンダリングになりますか?
間違いなく 'setState'は異なる機能で呼び出された場合でも、バッチ処理されますか?つまり、メインループの実行が終了したときにのみイベントループがフラッシュされます。 – Avery235
あなたのコードと実行されている場所によって異なります。これは主に反応関数の実行順序によって決まります。しかし、レンダリング前のライフサイクル内であれば、一般的に、さまざまな機能がバッチ処理されます。 –
"レンダリング前のライフサイクル内" ライフサイクルはどのように決定されていますか? – Avery235