غالبًا ما يكون التفاعل مع واجهات برمجة التطبيقات الخارجية أمرًا ضروريًا، ويعمل React Query على تبسيط ذلك من خلال السماح لك بالتركيز على البيانات بدلاً من تعقيد جلبها. سيرشدك هذا الدليل خلال إعداد مشروع React Native باستخدام Expo ودمجه مع 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
قم بإنشاء ثلاثة خطافات مخصصة في مجلد الخطافات في جذر مشروعك.
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.
يؤدي إعداد مشروع Expo React Native باستخدام React Query إلى تبسيط إدارة الحالة وتفاعلات واجهة برمجة التطبيقات (API). من خلال الاستفادة من ميزات React Query القوية، مثل التخزين المؤقت وتحديثات الخلفية، يمكنك التركيز بشكل أكبر على بياناتك وتقليل التركيز على تعقيدات جلبها.
برمجة سعيدة! ??? ??? ?
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3