ネットワークからデータをフェッチするときにプログレスバーを表示および非表示にする方法は?

user10241787

アプリでContextApiを使用HooksしていReactNativeます。

これは、APIからブログの配列をフェッチするための私のコードです

const getBlogPosts = dispatch => {
  return async () => {
    try {
      const response = await jsonServer.get("/blogposts");
      dispatch({ type: "get_blogposts", payload: response.data });
    } catch (err) {
      dispatch({
        type: "get_blogposts",
        payload: "Something went wrong"
      });
    }
  };
};

const blogReducer = (state, action) => {
  switch (action.type) {
    case "get_blogposts":
      return action.payload;
     .....

ここで私のコンポーネントファイルは以下のようなことをしています

const IndexScreen = ({ navigation }) => {
  const { state, getBlogPosts } = useContext(Context);

  useEffect(() => {
    getBlogPosts();

  }, []);

  return (
    <View>
      <FlatList..../>
      {state.length === 0 ? <ProgressBar /> : null}

ブログがないと、ネットワーク操作が終了した後もプログレスバーが表示され続けるため、プログレスバーを表示および表示するための上記のコードを記述できません。ユーザーが呼び出しgetBlogPostsときに複数のディスパッチを起動しようとしましたが、状態の値が変更されます。ブール値から配列へ、そして再びブール値へ。

プログレスバーの可視性を処理する簡単な方法はありますか?

ラマン

あなたは次のように派遣して、新しいタイプを持つことができますget_blogposts_in_progressし、セットtrue/falseのような減速機でstate.loading = trueの発送の場合get_blogposts_in_progress、発送state.loading = falseのAPI呼び出しが成功またはエラーのあるとき。

const getBlogPosts = dispatch => {
  return async () => {
    dispatch({ type: "get_blogposts_in_progress" });
    try {
      const response = await jsonServer.get("/blogposts");
      dispatch({ type: "get_blogposts", payload: response.data });
    } catch (err) {
      dispatch({
        type: "get_blogposts",
        payload: "Something went wrong"
      });
    }
  };
};
const blogReducer = (state, action) => {
  switch (action.type) {
    case "get_blogposts_in_progress":
      return { ...state, ...{ loading: true } };
    case "get_blogposts":
      return { ...action.payload, ...{ loading: false } };
     .....

そして、コンポーネントファイル。

const IndexScreen = ({ navigation }) => {
  const { state, getBlogPosts } = useContext(Context);

  useEffect(() => {
    getBlogPosts();

  }, []);

  return (
    <View>
      <FlatList..../>
      {state.loading ? <ProgressBar /> : null}

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Windowsエクスプローラーの左側のサイドバーからホームグループ、このPC、およびネットワークのドロップダウンリストを非表示にする方法は?

分類Dev

Windowsエクスプローラーの左側のサイドバーからホームグループ、このPC、およびネットワークのドロップダウンリストを非表示にする方法は?

分類Dev

Firebaseからデータをフェッチしているときにプログレスバーを表示する方法

分類Dev

チェックボックスを使用してJavaScriptグラフでデータシリーズを表示および非表示にする方法

分類Dev

デバッグ時にJavaScriptフレームワークの呼び出しスタックを非表示にすることは可能ですか?アプリケーションのJavaScriptコードをステップオーバーするだけです

分類Dev

入力フィールドがチェックボックスから非表示になっているときにng-modelプレビューデータを空にするにはどうすればよいですか?

分類Dev

デスクトップおよびモバイルのポートレートとランドスケープで機能するレスポンシブな方法でグラフを表示するにはどうすればよいですか?

分類Dev

編集ページのチェックボックスから値に応じてフィールドを表示および非表示にする方法

分類Dev

テーブルでボタンをクリックしたときにプログレスバーを非表示にする方法、データをサーバーから動的に取得する(ループの繰り返し)

分類Dev

Androidでボタンクリック時にパスワードを表示および非表示にする方法は?

分類Dev

コントローラコードがAPIからデータをフェッチしているときに、「データのフェッチ」テキストをユーザーに表示するにはどうすればよいですか?

分類Dev

ボタンクリック時にハイチャートのスクロールバーと範囲セレクターを表示/非表示にする方法は?

分類Dev

FirestorePagingAdapterのメソッドonLoadingStateChangedからプログレスバーを表示/非表示にする方法は?

分類Dev

KeychainSwiftを使用しているときに、デバイスのバックアップおよび復元プロセスにキーチェーンデータが含まれないようにするにはどうすればよいですか?

分類Dev

チェックボックスに基づいてデータを表示および非表示にする方法が必要です

分類Dev

CloudFormationテンプレートを更新するときに、「互換性のない起動テンプレート:ネットワークインターフェイスのデバイスインデックスはゼロでなければなりません」を解決するにはどうすればよいですか?

分類Dev

FastReportオブジェクトインスペクターをロックおよび非表示にするにはどうすればよいですか?

分類Dev

ユーザーがvb6.0プロジェクトソフトウェアからログアウトしたときにネットワークドライバーのマップを解除するにはどうすればよいですか?

分類Dev

マルチスレッドまたはその他の.NETテクノロジを使用して、ネットワーク、ディスク、およびプロセッサを集中的に使用するジョブを実行するプログラムをスケーリングするにはどうすればよいですか?

分類Dev

マシンがローカルワイヤレスプリンターおよびデバイスにアクセスできるようにネットワークを構成する方法

分類Dev

PythonフラスコWebプロジェクトをgithubに移動するときにデータベース接続URLを非表示にする方法は?

分類Dev

Firebaseデータベースからデータをフェッチしているときに[進行状況]ダイアログを表示する

分類Dev

ボットフレームワークでチャネルデータをデバッグするにはどうすればよいですか?

分類Dev

ユーザーがアプリを非表示にするかデバイスの電源を切ると、swiftuiのカスタムタイマーがバックグラウンドフェッチでカウントを停止します

分類Dev

Codeigniterを使用してデータベースからデータをフェッチし、ドロップダウンリストに表示する方法

分類Dev

asp.netのサーバーフォルダーからMicrosoftAccessデータベースをアップロードおよびフェッチする方法

分類Dev

入力ボックスが変更されたときにデータバインディングからメッセージを非表示にする方法

分類Dev

これは、フェッチリクエストからReactにデータを表示する正しい方法ですか?そうでない場合、コンポーネントにレンダリングされるJSXを変更するにはどうすればよいですか?

分類Dev

インターフェイスにプログレスバーが表示されているときにCOMオブジェクトを長時間呼び出すにはどうすればよいですか?

Related 関連記事

  1. 1

    Windowsエクスプローラーの左側のサイドバーからホームグループ、このPC、およびネットワークのドロップダウンリストを非表示にする方法は?

  2. 2

    Windowsエクスプローラーの左側のサイドバーからホームグループ、このPC、およびネットワークのドロップダウンリストを非表示にする方法は?

  3. 3

    Firebaseからデータをフェッチしているときにプログレスバーを表示する方法

  4. 4

    チェックボックスを使用してJavaScriptグラフでデータシリーズを表示および非表示にする方法

  5. 5

    デバッグ時にJavaScriptフレームワークの呼び出しスタックを非表示にすることは可能ですか?アプリケーションのJavaScriptコードをステップオーバーするだけです

  6. 6

    入力フィールドがチェックボックスから非表示になっているときにng-modelプレビューデータを空にするにはどうすればよいですか?

  7. 7

    デスクトップおよびモバイルのポートレートとランドスケープで機能するレスポンシブな方法でグラフを表示するにはどうすればよいですか?

  8. 8

    編集ページのチェックボックスから値に応じてフィールドを表示および非表示にする方法

  9. 9

    テーブルでボタンをクリックしたときにプログレスバーを非表示にする方法、データをサーバーから動的に取得する(ループの繰り返し)

  10. 10

    Androidでボタンクリック時にパスワードを表示および非表示にする方法は?

  11. 11

    コントローラコードがAPIからデータをフェッチしているときに、「データのフェッチ」テキストをユーザーに表示するにはどうすればよいですか?

  12. 12

    ボタンクリック時にハイチャートのスクロールバーと範囲セレクターを表示/非表示にする方法は?

  13. 13

    FirestorePagingAdapterのメソッドonLoadingStateChangedからプログレスバーを表示/非表示にする方法は?

  14. 14

    KeychainSwiftを使用しているときに、デバイスのバックアップおよび復元プロセスにキーチェーンデータが含まれないようにするにはどうすればよいですか?

  15. 15

    チェックボックスに基づいてデータを表示および非表示にする方法が必要です

  16. 16

    CloudFormationテンプレートを更新するときに、「互換性のない起動テンプレート:ネットワークインターフェイスのデバイスインデックスはゼロでなければなりません」を解決するにはどうすればよいですか?

  17. 17

    FastReportオブジェクトインスペクターをロックおよび非表示にするにはどうすればよいですか?

  18. 18

    ユーザーがvb6.0プロジェクトソフトウェアからログアウトしたときにネットワークドライバーのマップを解除するにはどうすればよいですか?

  19. 19

    マルチスレッドまたはその他の.NETテクノロジを使用して、ネットワーク、ディスク、およびプロセッサを集中的に使用するジョブを実行するプログラムをスケーリングするにはどうすればよいですか?

  20. 20

    マシンがローカルワイヤレスプリンターおよびデバイスにアクセスできるようにネットワークを構成する方法

  21. 21

    PythonフラスコWebプロジェクトをgithubに移動するときにデータベース接続URLを非表示にする方法は?

  22. 22

    Firebaseデータベースからデータをフェッチしているときに[進行状況]ダイアログを表示する

  23. 23

    ボットフレームワークでチャネルデータをデバッグするにはどうすればよいですか?

  24. 24

    ユーザーがアプリを非表示にするかデバイスの電源を切ると、swiftuiのカスタムタイマーがバックグラウンドフェッチでカウントを停止します

  25. 25

    Codeigniterを使用してデータベースからデータをフェッチし、ドロップダウンリストに表示する方法

  26. 26

    asp.netのサーバーフォルダーからMicrosoftAccessデータベースをアップロードおよびフェッチする方法

  27. 27

    入力ボックスが変更されたときにデータバインディングからメッセージを非表示にする方法

  28. 28

    これは、フェッチリクエストからReactにデータを表示する正しい方法ですか?そうでない場合、コンポーネントにレンダリングされるJSXを変更するにはどうすればよいですか?

  29. 29

    インターフェイスにプログレスバーが表示されているときにCOMオブジェクトを長時間呼び出すにはどうすればよいですか?

ホットタグ

アーカイブ