書き換えられたタイトルは次のとおりです: React 状態の初期更新が発生していません
P粉401901266
P粉401901266 2023-09-08 22:29:43
0
2
640

ユーザーが一度に 1 つ以上の画像をアップロードできる画像アップロード コンポーネントがあります。ユーザーが画像をアップロードするときは、常に useState() を使用して状態を更新するようにしています。しかし、ステータスはすぐには更新されませんでした。次のコードを更新して適切に動作させるにはどうすればよいですか。

リーリー

https://stackblitz.com/edit/react-ujcbjh?file=src/App.js

P粉401901266
P粉401901266

全員に返信(2)
P粉846294303

非プリミティブ型で useState を使用する場合は常に注意する必要があります。

React ドキュメントの次の 2 ページにいくつかの手順が記載されています:

つまり、react は Object.is を使用して、setState の呼び出しの間に状態が変化したかどうかを判断します。オブジェクトと配列の場合、その内容が変更された場合でも、これは true を返す場合があります。

いいねを押す +0
P粉596191963

React では、useState フックは状態をすぐには更新しません。ステータスの更新は非同期です。つまり、更新されたステータス値は、ステータス セッター関数を呼び出した直後には利用できない可能性があります。

この問題を解決するには、useEffect フックを使用してファイルの状態の変更をリッスンし、更新時に必要なアクションを実行します。 useEffect フックを含むコードの更新バージョンは次のとおりです:

リーリー

この更新されたコードでは、useEffect フックの 2 番目のパラメーター配列で依存関係として file を指定することで、ファイルの状態の変更をリッスンする useEffect フックを追加しました。ファイルのステータスが更新されるたびに、useEffect コールバック関数内のコードが実行されます。 useEffect フック内の更新されたファイル値を使用して、必要な操作を実行できます。

useEffect フックを使用すると、ステータスの更新後に更新されたステータス値が正しく記録されることがわかります。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート