React.js の非同期マップ ループ Promise.all.then(response ... ) が応答値を割り当てる場合、Promise は無限になります
P粉895187266
P粉895187266 2023-09-14 16:02:55
0
1
440

この問題に遭遇しましたが、私のケースに関するリソースが見つかりませんでした。 Spotify API を使用する React アプリを構築しており、ローカルの useState オブジェクトに「ArtistInformation」配列 (API エンドポイントの js オブジェクト) を設定する関数を実行したいと考えています。

このコード例は、アーティスト ID 配列を反復処理し、Api 関数「spotiApi.getArtistInfo(id)」を 1 回だけ実行する必要があります。

次のように実行すると:

リーリー

コード スニペットは正常に実行され、実行が停止します

しかし、「setArtistInfo」 useState が呼び出されると、ループは無限に実行され続けます。 リーリー

以下は参照用のコンポーネント全体です:

リーリー

事前にご協力いただきありがとうございます。解決できることを願っています。

P粉895187266
P粉895187266

全員に返信(1)
P粉819533564

ループは無限に実行されるわけではなく、コンポーネント は無限に を再レンダリングします。これにより再レンダリングが発生します:

リーリー

この はレンダリングごとに実行されます :

リーリー

したがって、各レンダリングはアーティスト情報を取得し、それが再レンダリングをトリガーし、それがアーティスト情報を取得し、それが再レンダリングをトリガーするというようになります。

最初の レンダリングでのみアーティスト情報を取得することが目的の場合は、空の依存関係配列を含めます: リーリー

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