P粉4398045142023-09-03 16:06:45
つまり、実際にはコードの実行方法、特に setState の非同期の性質に依存するため、setState のコールバック形式を使用できます。以下に例を示します:
リーリーコードの残りの部分を含む完全な例を次に示します:
リーリーP粉7757237222023-09-03 16:04:09
次の 3 つのことが考えられます:
checkLength
を呼び出します。 setState
の新しい値は取得されません。これは React の基本的な考え方であり (これが良いアイデアかどうかは議論の余地があります)、状態値はレンダリング中に不変です。 setState
次のレンダリングで使用される次の不変状態を与えるだけです。 setState
が以前の状態に依存する場合、現在の値を直接使用するのではなく、コールバックを setState
に渡す必要があります。たとえば、空の配列があり、fetch を 1 回呼び出して、最初の配列が完了する前に再度 fetch を呼び出したとします。両方の setState
呼び出しは、...blob
の実行時に空の配列を参照します。コールバックを渡すことにより、setState
はパラメータとして渡された最新の値を取得します。詳細: https://react.dev/reference/react/Component#setstate 最も簡単な解決策は、setState
コールバック内の checkLength
にパラメータとして配列を渡すことです。
これは質問の .then()
です:
これは非同期
await
長さの確認