「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > React Query を使用して Expo React Native プロジェクトをセットアップする方法

React Query を使用して Expo React Native プロジェクトをセットアップする方法

2024 年 10 月 31 日公開
ブラウズ:229

How to Set Up an Expo React Native Project with React Query

外部 API との対話は多くの場合不可欠ですが、React Query を使用すると、データを取得する複雑さではなくデータに集中できるため、これが簡素化されます。このガイドでは、Expo を使用して React Native プロジェクトを設定し、それを React Query と統合する方法について説明します。

ステップ 1: Expo プロジェクトをセットアップする

まず、Expo CLI をインストールし、新しいプロジェクトを作成します。すでにプロジェクトがある場合は、次のステップに進みます。

  • Expo CLI をインストールします:
  npm install -g expo-cli
  • 新しいプロジェクトを作成:
  expo init my-react-native-query-app

ニーズに基づいてテンプレートを選択してください。

ステップ 2: React Query と依存関係をインストールする

React Query は、React Native アプリのサーバー状態の管理に強力です。

  • React Query をインストールします:
  npm install @tanstack/react-query
  • 追加の依存関係をインストールする:
  npx expo install @react-native-community/netinfo

ステップ 3: ヘルパー関数を作成する

プロジェクトのルートにあるフック フォルダーに 3 つのカスタム フックを作成します。

  1. useAppState.ts:
   import NetInfo from '@react-native-community/netinfo';
   import { onlineManager } from '@tanstack/react-query';

   onlineManager.setEventListener((setOnline) => {
     return NetInfo.addEventListener((state) => {
       setOnline(!!state.isConnected);
     });
   });

これにより、アプリがインターネットに再接続したときに自動再取得が有効になります。

  1. OnlineManager.ts を使用する:
   import { useEffect } from 'react';
   import { AppState, Platform } from 'react-native';
   import { focusManager } from '@tanstack/react-query';

   function onAppStateChange(status: AppStateStatus) {
     if (Platform.OS !== 'web') {
       focusManager.setFocused(status === 'active');
     }
   }

   useEffect(() => {
     const subscription = AppState.addEventListener('change', onAppStateChange);
     return () => subscription.remove();
   }, []);

これにより、アプリがアクティブなときにアプリの状態が更新されます。

  1. RefreshOnFocus.ts を使用:
   import React from 'react';
   import { useFocusEffect } from '@react-navigation/native';

   export function useRefreshOnFocus(refetch: () => Promise) {
     const firstTimeRef = React.useRef(true);

     useFocusEffect(
       React.useCallback(() => {
         if (firstTimeRef.current) {
           firstTimeRef.current = false;
           return;
         }

         refetch();
       }, [refetch]),
     );
   }

このカスタム フックは、画面がフォーカスされているときに再取得をトリガーします。

ステップ 4: ルート ファイルに関数を実装する

メイン ルート ファイルで次を設定します:

import {
  QueryClient,
  QueryClientProvider,
  focusManager,
} from "@tanstack/react-query";
import { AppStateStatus, Platform } from "react-native";
import { useOnlineManager } from "@/hooks/query/useOnlineManager";
import { useAppState } from "@/hooks/query/useAppState";

export default function RootLayout() {
  function onAppStateChange(status: AppStateStatus) {
    if (Platform.OS !== "web") {
      focusManager.setFocused(status === "active");
    }
  }

  const queryClient = new QueryClient({
    defaultOptions: { queries: { retry: 2 } },
  });

  useOnlineManager();
  useAppState(onAppStateChange);

  return (
    
      {Rest of your project}
    
  );
}

ステップ 5: 開発サーバーを起動する

プロジェクト ディレクトリに移動し、Expo 開発サーバーを起動します:

expo start

Expo では、Expo Go アプリを介して、または開発アプリを構築することで、迅速なテストが可能です。開発ビルドの作成の詳細については、Expo のドキュメントを参照してください。

結論

React Query を使用して Expo React Native プロジェクトをセットアップすると、状態管理と API のやり取りが簡素化されます。キャッシュやバックグラウンド更新などの React Query の強力な機能を活用することで、複雑なデータ取得の手間を省き、データに集中することができます。

コーディングを楽しんでください! ??‍? ??‍? ?

リリースステートメント この記事は次の場所に転載されています: https://dev.to/hokagedemehin/how-to-set-up-an-expo-react-native-project-with-react-query-3oeb?1 侵害がある場合は、 Study_golang@163 .comdelete に連絡してください
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3