React setState() メソッドと状態の不変性
React では、コンポーネントの状態を更新するために setState() メソッドが使用されます。ただし、setState() を呼び出しても状態オブジェクトがすぐに変更されるわけではないことを理解することが重要です。
状態の変更が非同期である理由
React ドキュメントでは、setState() について説明しています。 「保留状態遷移」を開始します。状態に対する保留中の更新が作成されますが、setState() を呼び出した後に this.state にアクセスすると、既存の状態を返すことができます。これは、React がパフォーマンス上の理由から状態の更新をバッチ処理する場合があるためです。
非同期の性質のデモンストレーション
質問に示されている次のコード例を検討してください:
handleChange: function(event) { console.log(this.state.value); // Prints the initial value this.setState({value: event.target.value}); console.log(this.state.value); // Prints the same value as above }
この例では、入力値が更新されると、handleChange メソッドが呼び出されます。最初の console.log ステートメントは初期状態値を出力しますが、2 番目の console.log ステートメントは更新された値を出力することが期待されます。ただし、setState() は非同期で動作するため、2 番目の console.log ステートメントは初期値を返します。
即時更新の解決策
関数を実行する必要がある場合状態の更新後、それをコールバックとして渡すことができます。 setState():
this.setState({value: event.target.value}, function () { console.log(this.state.value); // Prints the updated value });
この場合、状態の更新が完了するとコールバックが呼び出され、更新された値が this.state で利用可能になります。
以上がReact の非同期 `setState()` メソッドは状態の更新にどのような影響を与えますか?また、更新された状態に即座にアクセスできるようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。