0Pricing
React Academy · درس

إعداد React Query وQueryClient

ثبّت TanStack Query، وغلّف تطبيقك داخل QueryClientProvider، ونفّذ أول useQuery.

إعداد React Query وQueryClient درس مجاني في React Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في React Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة React Academy 4 دروس في المجموع.

مرحبًا

في هذا الدرس، ستثبّتون TanStack Query، وستُعدّون QueryClient وQueryClientProvider، وستنفّذون أول استدعاء لـ useQuery لجلب البيانات من واجهة API.

ما هي React Query؟

تدير TanStack Query (المعروفة سابقًا باسم React Query) حالة الخادم، بما في ذلك جلب البيانات وتخزينها مؤقتًا ومزامنتها وتحديثها من المصادر البعيدة. وهي تستبدل إدارة حالات التحميل والخطأ يدويًا وجلب البيانات المعتمد على useEffect.

التثبيت

ثبّتوا الحزمة الأساسية، ويمكنكم تثبيت DevTools اختياريًا.
npm install @tanstack/react-query
npm install @tanstack/react-query-devtools --save-dev

إنشاء QueryClient

أنشئوا مثيلًا من QueryClient ليحتوي على إعدادات التخزين المؤقت جميعها. مرّروه إلى QueryClientProvider الذي يغلّف تطبيقكم.
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';

const queryClient = new QueryClient();

createRoot(document.getElementById('root')).render(
  <QueryClientProvider client={queryClient}>
    <App />
  </QueryClientProvider>
);

أول استخدام لـ useQuery

استدعوا useQuery مع مصفوفة queryKey وqueryFn تُعيد البيانات. يحدّد المفتاح إدخال التخزين المؤقت بشكل فريد.
import { useQuery } from '@tanstack/react-query';

function Posts() {
  const { data, isLoading, isError } = useQuery({
    queryKey: ['posts'],
    queryFn: () => fetch('/api/posts').then(r => r.json()),
  });

  if (isLoading) return <p>Loading...</p>;
  if (isError) return <p>Error!</p>;
  return <ul>{data.map(p => <li key={p.id}>{p.title}</li>)}</ul>;
}

مفاتيح الاستعلام

مفاتيح الاستعلام هي مصفوفات. أضيفوا المعلمات إلى المفتاح لتحديد نطاق إدخال التخزين المؤقت. المفاتيح المختلفة تعني إدخالات مختلفة في التخزين المؤقت.
// All posts
useQuery({ queryKey: ['posts'], queryFn: fetchPosts })

// Post with id 5
useQuery({ queryKey: ['posts', 5], queryFn: () => fetchPost(5) })

// Posts filtered by category
useQuery({ queryKey: ['posts', { category: 'react' }], queryFn: /* ... */ })

حالة الاستعلام

تُعيد useQuery خصائص متعددة للحالة: `isLoading` و`isFetching` و`isError` و`isSuccess` و`data` و`error`. تكون `isFetching` بقيمة true حتى أثناء إعادة الجلب في الخلفية، بينما تكون `isLoading` بقيمة true عند التحميل الأول فقط.

React Query DevTools

أضيفوا ReactQueryDevtools إلى تطبيقكم أثناء التطوير لرؤية جميع إدخالات التخزين المؤقت وحالتها ووقت آخر جلب لها. وهذا مفيد جدًا لتصحيح الأخطاء.
import { ReactQueryDevtools } from '@tanstack/react-query-devtools';

<QueryClientProvider client={queryClient}>
  <App />
  <ReactQueryDevtools initialIsOpen={false} />
</QueryClientProvider>

الإعداد الافتراضي

اضبطوا الإعدادات العامة الافتراضية على QueryClient، مثل staleTime وgcTime (جمع البيانات المهملة) وعدد مرات إعادة المحاولة وrefetchOnWindowFocus.
const queryClient = new QueryClient({
  defaultOptions: {
    queries: {
      staleTime: 60_000,     // data is fresh for 60s
      retry: 2,              // retry failed queries twice
      refetchOnWindowFocus: false,
    },
  },
});

إعادة الجلب التلقائية

تعيد React Query جلب البيانات القديمة افتراضيًا عند استعادة النافذة تركيزها، وإعادة تركيب المكوّن، وإعادة اتصال الشبكة. ويمكن ضبط هذه الخيارات بشكل مستقل لكل استعلام.

تحقّق سريع

ما الغرض من مصفوفة queryKey في useQuery؟

مراجعة

ثبّتوا @tanstack/react-query، وأنشئوا QueryClient، وغلّفوا تطبيقكم باستخدام QueryClientProvider، ثم استدعوا useQuery مع queryKey وqueryFn. أضيفوا DevTools لمراقبة البيانات. واضبطوا الإعدادات الافتراضية العامة على QueryClient.

التالي

الدرس التالي: **التخزين المؤقت وStale Time وإعادة الجلب في الخلفية** — ستضبطون staleTime وgcTime للتحكم في وقت إعادة جلب البيانات.

الأسئلة الشائعة

هل درس «إعداد React Query وQueryClient» مجاني؟

نعم — نص درس «إعداد React Query وQueryClient» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة React Academy، انتقل إلى CoddyKit PRO. تتضمن دورة React Academy 4 دروس في المجموع.

ماذا ستتعلم في «إعداد React Query وQueryClient»؟

ثبّت TanStack Query، وغلّف تطبيقك داخل QueryClientProvider، ونفّذ أول useQuery. تتمرن على React Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ React Academy؟

لا تُشترط خبرة سابقة. React Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «إعداد React Query وQueryClient»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس React Academy هذا؟

نعم. كل درس في React Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. إعداد React Query وQueryClient
  2. التخزين المؤقت ومدة القِدم وإعادة الجلب في الخلفية
  3. الطفرات باستخدام useMutation
  4. التمرير اللانهائي وتقسيم الصفحات باستخدام useInfiniteQuery
← العودة إلى React Academy