Die Interaktion mit externen APIs ist oft unerlässlich, und React Query vereinfacht dies, indem es Ihnen ermöglicht, sich auf die Daten zu konzentrieren und nicht auf die Komplexität des Abrufens. Dieser Leitfaden führt Sie durch die Einrichtung eines React Native-Projekts mit Expo und dessen Integration in React Query.
Um zu beginnen, installieren Sie Expo CLI und erstellen Sie ein neues Projekt. Wenn Sie bereits ein Projekt haben, fahren Sie mit dem nächsten Schritt fort.
npm install -g expo-cli
expo init my-react-native-query-app
Wählen Sie eine Vorlage basierend auf Ihren Anforderungen.
React Query ist leistungsstark für die Verwaltung des Serverstatus in Ihren React Native-Apps.
npm install @tanstack/react-query
npx expo install @react-native-community/netinfo
Erstellen Sie drei benutzerdefinierte Hooks in einem Hooks-Ordner im Stammverzeichnis Ihres Projekts.
import NetInfo from '@react-native-community/netinfo'; import { onlineManager } from '@tanstack/react-query'; onlineManager.setEventListener((setOnline) => { return NetInfo.addEventListener((state) => { setOnline(!!state.isConnected); }); });
Dies ermöglicht den automatischen erneuten Abruf, wenn die App erneut eine Verbindung zum Internet herstellt.
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(); }, []);
Dadurch wird der App-Status aktualisiert, wenn die App aktiv ist.
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]), ); }
Dieser benutzerdefinierte Hook löst einen erneuten Aufruf aus, wenn der Bildschirm fokussiert ist.
Richten Sie in Ihrer Hauptroutendatei Folgendes ein:
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} ); }
Navigieren Sie zu Ihrem Projektverzeichnis und starten Sie den Expo-Entwicklungsserver:
expo start
Expo ermöglicht schnelles Testen über die Expo Go-App oder durch die Erstellung einer Entwicklungs-App. Weitere Informationen zum Erstellen eines Entwicklungs-Builds finden Sie in der Expo-Dokumentation.
Das Einrichten eines Expo React Native-Projekts mit React Query vereinfacht die Statusverwaltung und API-Interaktionen. Durch die Nutzung der leistungsstarken Funktionen von React Query, wie etwa Caching und Hintergrundaktualisierungen, können Sie sich mehr auf Ihre Daten konzentrieren und müssen sich weniger mit den Feinheiten des Abrufens befassen.
Viel Spaß beim Codieren! ???? ???? ?
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3