APIから受信したデータを更新するためにどのコンポーネントライフサイクルを使用しますか

オマール
state={url:'someurl' , stockData=[], error:false}

最初のマウント時に、APIからデータを取得し、状態に設定します。

      componentDidMount() {
        this.getDataFromApi();
      }

データを取得し、stockDataの状態を設定するための関数

    getDataFromApi = () => {
        fetch(this.state.url)
          .then(res => res.json())
          .then(
            res => {
              const sortedRes = res["results"].sort(function(a, b) {
                return b.ask_price - b.bid_price - (a.ask_price - a.bid_price);
              });
              this.setState(
                {
                  stockData: sortedRes
                }
              );
            },
            res => this.setState({ error: true })
          );
      };

このデータは常に変化しています。リアルタイムの更新を取得するにはどうすればよいですか?

を使用componentWillUpdateして現在の状態と次の状態を比較しsetTimeOut、3秒の遅延を使用して使用fetchData()てみました。これにより、それほど速く呼び出されませんでしたが、遅延が機能せず、fetchDataが短時間に何度も呼び出されていました。

  componentWillUpdate(nextProps, nextState) {
 if(nextState.stockData !== this.state.stockData) {
    fetch(this.state.url)
      .then(res => res.json())
      .then(this.delay(function() {
              res => {
                const sortedRes = res["results"].sort(function(a, b) {
                  return b.ask_price - b.bid_price - (a.ask_price - a.bid_price);
                });
                console.log(sortedRes);
                this.setState(
                  {
                    stockData: sortedRes
                  },
                //  () => console.log("SORTED RES", sortedRes)
                );
              },
              res => this.setState({ error: true })
      }, 3000)) // waits 3s
      return true;
    }
    else {
      return false;
    }
  }
アンドリュー

setTimeout動作しない理由は、各呼び出しの発生を停止していないためです。それぞれを3秒遅らせているだけです。Api呼び出し全体をの中に配置することをお勧めsetIntervalcomponentDidMountます。

componentDidMount() {
  this.apiCall = setInterval(() => {
    this.getDataFromApi();
  }, 3000)
}

コンポーネントがアンマウントされたときにもハウスキーピングを行うことを忘れないでください。そうしないとsetTimeout、コンポーネントがDOMから削除された場合でも停止することはありません。

componentWillUnmount() {
  clearInterval(this.apiCall);
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

NodeJSサーバーのクライアントから受信したデータを印刷します

分類Dev

ます。java.sql.SQLException:コネクタ8.0.11のために、サーバから受信した未知の初期文字セットインデックス「255」

分類Dev

ストアからデータを受信しているコンポーネントがあります。受信したデータを更新し、変更時にコンポーネントを再レンダリングするにはどうすればよいですか?

分類Dev

クライアントは、受信したのと同じJWTトークンを使用してサーバーにコールバックしますか?

分類Dev

React-Redux + Redux-機能コンポーネントのサンク。APIからデータをフェッチした後にUIを更新する

分類Dev

インターネットサービスからデータを受信するためにhttpsサービスをローカルに展開する方法

分類Dev

ブルームバーグからサプライチェーンデータ(SPLC)をエクスポートするためにBlpapi / Pdblpなどのパッケージを使用した人はいますか?

分類Dev

JavaScriptクライアントから受信したトークンを使用して、サーバー上にソーシャル接続を作成します

分類Dev

前のアクティビティからのインテントとしてアクティビティを提示するためにデータが受信されたときにフラグメントのデータを設定する方法

分類Dev

Androidのギャラリーまたは閲覧可能なファイルマネージャーからビデオインテントを受信します

分類Dev

REST API:クライアントがすべてのデータを受信したことを確認するにはどうすればよいですか?

分類Dev

fs.readStreamとfs.writesreamを使用してビデオ(.mp4)ファイルを[クライアントからサーバーに、またはその逆に] [ノードJで]送受信する方法は?

分類Dev

Seleniumを使用した自動化テストのために、Excelファイルからデータを読み取るためにPythonにインポートするライブラリはどれですか?

分類Dev

コンポーネントで使用するためにjsファイルからreactでデータをインポートする方法

分類Dev

タイマーが終了したときに、ソケットからデータを受信するために使用されるwhileサイクルから抜け出すにはどうすればよいですか?

分類Dev

axiosの投稿後に状態を更新するために使用するライフサイクルコンポーネントに反応するもの

分類Dev

コンポーネントで使用するために、APIエンドポイントからのjson形式を変更します

分類Dev

MPEG-DASHとHLSフォールバックを使用してオンラインビデオ配信サービスを構築するための詳細なチュートリアルまたはケーススタディはありますか?

分類Dev

Reactエラー「コンポーネントが定義されているファイルからコンポーネントをエクスポートするのを忘れたか、デフォルトのインポートと名前付きのインポートを混同している可能性があります」

分類Dev

最初のコンポーネントで受信したWebSocketイベントに基づいて、2番目のコンポーネントのコンテンツを更新するにはどうすればよいですか?

分類Dev

コンポーネントのライフサイクルに依存しないVue.jsとVuexでの長いポーリング、「購読解除」のためのホットなオブザーバブルをどこに保存するか?

分類Dev

サーバーがクライアントからシードしたよりも多くのデータを受信するのは奇妙です

分類Dev

クライアントからSYNを受信した直後にサーバーがSYN / ACKを送信する

分類Dev

gRPCスタブクライアントがテンソルフローサービングサーバーから受信した出力を解析するにはどうすればよいですか?

分類Dev

リアルタイムグラフ化のためにmatplotlib.animationを使用して、動的に成長するリストからデータポイントを継続的にストリーミングするにはどうすればよいですか?

分類Dev

エラーは、コンポーネントが定義されているファイルからコンポーネントをエクスポートするのを忘れたが、カスタムコンポーネントをエクスポートしていないことを示していました(React)

分類Dev

Ajaxを使用してフォーム値をコントローラーに渡す方法(送信されたデータを受け入れるためにコントローラー部分でどのタイプが必要ですか)

分類Dev

フラッシュからデータを受信し、angularJSクライアント側に表示します

分類Dev

多くのデータポイントからきちんとしたタイムフローグラフを生成するselectクエリまたはサーバー側関数を作成するにはどうすればよいですか?

Related 関連記事

  1. 1

    NodeJSサーバーのクライアントから受信したデータを印刷します

  2. 2

    ます。java.sql.SQLException:コネクタ8.0.11のために、サーバから受信した未知の初期文字セットインデックス「255」

  3. 3

    ストアからデータを受信しているコンポーネントがあります。受信したデータを更新し、変更時にコンポーネントを再レンダリングするにはどうすればよいですか?

  4. 4

    クライアントは、受信したのと同じJWTトークンを使用してサーバーにコールバックしますか?

  5. 5

    React-Redux + Redux-機能コンポーネントのサンク。APIからデータをフェッチした後にUIを更新する

  6. 6

    インターネットサービスからデータを受信するためにhttpsサービスをローカルに展開する方法

  7. 7

    ブルームバーグからサプライチェーンデータ(SPLC)をエクスポートするためにBlpapi / Pdblpなどのパッケージを使用した人はいますか?

  8. 8

    JavaScriptクライアントから受信したトークンを使用して、サーバー上にソーシャル接続を作成します

  9. 9

    前のアクティビティからのインテントとしてアクティビティを提示するためにデータが受信されたときにフラグメントのデータを設定する方法

  10. 10

    Androidのギャラリーまたは閲覧可能なファイルマネージャーからビデオインテントを受信します

  11. 11

    REST API:クライアントがすべてのデータを受信したことを確認するにはどうすればよいですか?

  12. 12

    fs.readStreamとfs.writesreamを使用してビデオ(.mp4)ファイルを[クライアントからサーバーに、またはその逆に] [ノードJで]送受信する方法は?

  13. 13

    Seleniumを使用した自動化テストのために、Excelファイルからデータを読み取るためにPythonにインポートするライブラリはどれですか?

  14. 14

    コンポーネントで使用するためにjsファイルからreactでデータをインポートする方法

  15. 15

    タイマーが終了したときに、ソケットからデータを受信するために使用されるwhileサイクルから抜け出すにはどうすればよいですか?

  16. 16

    axiosの投稿後に状態を更新するために使用するライフサイクルコンポーネントに反応するもの

  17. 17

    コンポーネントで使用するために、APIエンドポイントからのjson形式を変更します

  18. 18

    MPEG-DASHとHLSフォールバックを使用してオンラインビデオ配信サービスを構築するための詳細なチュートリアルまたはケーススタディはありますか?

  19. 19

    Reactエラー「コンポーネントが定義されているファイルからコンポーネントをエクスポートするのを忘れたか、デフォルトのインポートと名前付きのインポートを混同している可能性があります」

  20. 20

    最初のコンポーネントで受信したWebSocketイベントに基づいて、2番目のコンポーネントのコンテンツを更新するにはどうすればよいですか?

  21. 21

    コンポーネントのライフサイクルに依存しないVue.jsとVuexでの長いポーリング、「購読解除」のためのホットなオブザーバブルをどこに保存するか?

  22. 22

    サーバーがクライアントからシードしたよりも多くのデータを受信するのは奇妙です

  23. 23

    クライアントからSYNを受信した直後にサーバーがSYN / ACKを送信する

  24. 24

    gRPCスタブクライアントがテンソルフローサービングサーバーから受信した出力を解析するにはどうすればよいですか?

  25. 25

    リアルタイムグラフ化のためにmatplotlib.animationを使用して、動的に成長するリストからデータポイントを継続的にストリーミングするにはどうすればよいですか?

  26. 26

    エラーは、コンポーネントが定義されているファイルからコンポーネントをエクスポートするのを忘れたが、カスタムコンポーネントをエクスポートしていないことを示していました(React)

  27. 27

    Ajaxを使用してフォーム値をコントローラーに渡す方法(送信されたデータを受け入れるためにコントローラー部分でどのタイプが必要ですか)

  28. 28

    フラッシュからデータを受信し、angularJSクライアント側に表示します

  29. 29

    多くのデータポイントからきちんとしたタイムフローグラフを生成するselectクエリまたはサーバー側関数を作成するにはどうすればよいですか?

ホットタグ

アーカイブ