React では、コンポーネントの状態を更新するために setState() メソッドが使用されます。ただし、よくある誤解の 1 つは、setState() が状態を即座に変更するということです。これは当てはまりません。
React のドキュメントには、「setState() は this.state をすぐには変更しませんが、保留中の状態遷移を作成します。」と明確に記載されています。これは、setState() を呼び出した後でも、this.state にアクセスすると既存の値を返すことができることを意味します。 React では、効率を高めるために複数の setState() 呼び出しをバッチ処理できるため、パフォーマンスの最適化のためにこの動作が許可されています。
React のドキュメントの Forms セクションにある次のコード スニペットを検討してください。
handleChange: function(event) { console.log(this.state.value); this.setState({value: event.target.value}); console.log(this.state.value); },
ブラウザで入力値を更新すると、両方の console.log ステートメントが出力されることに気づくでしょう。同じ値です。この動作は、setState() の非同期の性質を示しています。最初の console.log には初期状態の値が表示されますが、2 番目のログには setState() を使用して更新したにもかかわらず同じ値が表示されます。
必要な場合状態変更が発生した後にコードを実行するために、React は次の解決策を提供します。
this.setState({value: event.target.value}, function() { console.log(this.state.value); });
この場合、setState() に渡されたコールバックが実行されます。状態の更新が完了すると、console.log に更新された状態値が確実に出力されます。
以上が`setState()` が React のコンポーネントの状態をすぐに更新しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。