ホームページ >ウェブフロントエンド >jsチュートリアル >React で setState() を呼び出した直後に更新された状態値にアクセスするにはどうすればよいですか?

React で setState() を呼び出した直後に更新された状態値にアクセスするにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-16 16:35:15944ブラウズ

How Can I Access Updated State Values Immediately After Calling setState() in React?

React の状態伝播の難問

React の setState() メソッドは、更新された状態値を更新直後に取得しようとすると課題を引き起こします。これは、setState() の非同期の性質によるものです。

次のコードを考えてみましょう:

let total = newDealersDeckTotal.reduce((a, b) => a + b, 0);

console.log(total, 'tittal'); // Outputs correct total
setTimeout(() => {
  this.setState({ dealersOverallTotal: total });
}, 10);

console.log(this.state.dealersOverallTotal, 'dealersOverallTotal1'); // Outputs incorrect total

ここでの問題は、setState() 呼び出しが非同期であることです。これは、2 番目の console.log ステートメントが実行されるとき、状態がまだ更新されていないことを意味します。

これに対処するには、コールバック パターンを使用できます。これには、状態の変更が完了すると実行されるコールバック関数を setState() に渡すことが含まれます。

this.setState({ dealersOverallTotal: total }, () => {
  console.log(this.state.dealersOverallTotal, 'dealersOverallTotal1');
});

このアプローチを採用すると、コンソール ログ ステートメントは状態が更新された後にのみ実行され、確実に状態が更新されます。正しい値が表示されていることを確認します。

以上がReact で setState() を呼び出した直後に更新された状態値にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。