與外部 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
在專案根目錄的 hooks 資料夾中建立三個自訂掛鉤。
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