外部 API との対話は多くの場合不可欠ですが、React Query を使用すると、データを取得する複雑さではなくデータに集中できるため、これが簡素化されます。このガイドでは、Expo を使用して React Native プロジェクトを設定し、それを React Query と統合する方法について説明します。
まず、Expo CLI をインストールし、新しいプロジェクトを作成します。すでにプロジェクトがある場合は、次のステップに進みます。
npm install -g expo-cli
expo init my-react-native-query-app
ニーズに基づいてテンプレートを選択してください。
React Query は、React Native アプリのサーバー状態の管理に強力です。
npm install @tanstack/react-query
npx expo install @react-native-community/netinfo
プロジェクトのルートにあるフック フォルダーに 3 つのカスタム フックを作成します。
import NetInfo from '@react-native-community/netinfo'; import { onlineManager } from '@tanstack/react-query'; onlineManager.setEventListener((setOnline) => { return NetInfo.addEventListener((state) => { setOnline(!!state.isConnected); }); });
これにより、アプリがインターネットに再接続したときに自動再取得が有効になります。
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(); }, []);
これにより、アプリがアクティブなときにアプリの状態が更新されます。
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]), ); }
このカスタム フックは、画面がフォーカスされているときに再取得をトリガーします。
メイン ルート ファイルで次を設定します:
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} ); }
プロジェクト ディレクトリに移動し、Expo 開発サーバーを起動します:
expo start
Expo では、Expo Go アプリを介して、または開発アプリを構築することで、迅速なテストが可能です。開発ビルドの作成の詳細については、Expo のドキュメントを参照してください。
React Query を使用して Expo React Native プロジェクトをセットアップすると、状態管理と API のやり取りが簡素化されます。キャッシュやバックグラウンド更新などの React Query の強力な機能を活用することで、複雑なデータ取得の手間を省き、データに集中することができます。
コーディングを楽しんでください! ??? ??? ?
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3