ユーザーデータを更新したいです。既存のユーザー データは正常に取得されましたが、更新されませんでした。上記のエラーが表示されます。 以下の行から等号を削除すると、エラーは削除されますが、ユーザー データはまだ更新されません。
const presentUser = users.userList.filter(f => f.id == id);
P粉9795861592024-01-02 11:26:30
データ構造が何であるかはわかりませんが、提供されたコードから説明し、問題が何であるかを推測することができます。
受け取ったエラーは、existingUser
の 0 番目の要素が存在しないことを意味します。 existingUser
はフィルターから取得され、フィルターは配列を返すため、フィルター内の条件がどの要素でも満たされていないと想定できます。
===
を ==
に変更すると機能するということは、f.id と id が同じ型ではないことが推測できます。おそらく、一方は文字列で、もう一方は整数です。
== を使用すると、実際に元の問題が解決されます。ただし、=== を使用したい場合は、値のタイプを変更してみてください。たとえば、id が文字列で f.id が整数の場合、次のように条件を記述できます:
リーリーGoogle 検索すると違いがわかります。
次の問題は、上記のエラーを修正した後、データが更新されないことです。これは、コンポーネントで使用しているデザイン パターンが原因です。 useState は初期値のみを取り、setState
を使用して更新しない限り、コンポーネントの存続期間中は変更されません。
useSelector とdispatch を使用しているため、redux
を使用していると思います。この場合、useState
は必要ないと思います。 existingUser[0]
から分解された name
と email
を使用するだけで、これらは 更新コードを送信するたびに表示されます
コード>。