0Pricing
React Academy · درس

‏RTK Query: نقاط النهاية والتخزين المؤقت التلقائي

عرّف نقاط نهاية الاستعلامات والطفرات باستخدام createApi ودَع RTK Query يدير التخزين المؤقت.

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

مرحبًا

في هذا الدرس ستعرّفون نقاط نهاية للاستعلامات والطفرات باستخدام createApi الخاص بـ RTK Query، وستتركون له إدارة التخزين المؤقت وحالات التحميل وجلب البيانات تلقائيًا.

ما هو RTK Query؟

RTK Query هو طبقة لجلب البيانات والتخزين المؤقت مضمّنة في Redux Toolkit. فهو يلغي الحاجة إلى إدارة حالات التحميل والأخطاء يدويًا، ويزيل تكرار الطلبات، ويخزّن الاستجابات مؤقتًا بحسب نقطة النهاية والوسيطة.

إنشاء API باستخدام createApi

استدعوا createApi() مع reducerPath وbaseQuery وendpoints. وتتضمن النتيجة hooks مُولّدة لـ React.
import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';

export const userApi = createApi({
  reducerPath: 'userApi',
  baseQuery: fetchBaseQuery({ baseUrl: '/api' }),
  endpoints: (builder) => ({
    getUser: builder.query({ query: (id) => '/users/' + id }),
    getUsers: builder.query({ query: () => '/users' }),
  }),
});

export const { useGetUserQuery, useGetUsersQuery } = userApi;

إضافة API إلى المتجر

أضيفوا المخفِّض المُولَّد والوسيط البرمجي إلى configureStore. ويتولى الوسيط البرمجي دورة حياة التخزين المؤقت وإبطال البيانات وإعادة الجلب.
import { configureStore } from '@reduxjs/toolkit';
import { userApi } from './userApi';

export const store = configureStore({
  reducer: { [userApi.reducerPath]: userApi.reducer },
  middleware: (gDM) => gDM().concat(userApi.middleware),
});

استخدام Hook للاستعلام

استدعوا الـ hook المُولَّد داخل مكوّن. وسيعيد data وisLoading وisError وrefetch. تُخزَّن البيانات مؤقتًا بحسب الوسيطة — ويعيد الـ hook نفسه بالوسيطة نفسها البيانات المخزّنة فورًا.
function UserCard({ id }) {
  const { data, isLoading, isError } = useGetUserQuery(id);
  if (isLoading) return <Spinner />;
  if (isError) return <p>Error</p>;
  return <p>{data.name}</p>;
}

إزالة تكرار الطلبات تلقائيًا

إذا تم تحميل مكوّنين في الوقت نفسه واستدعيا useGetUsersQuery()، فسيرسل RTK Query طلب شبكة واحدًا فقط، ويشارك الاستجابة بين المكوّنين.

مدة صلاحية التخزين المؤقت باستخدام keepUnusedDataFor

تحكّموا في المدة التي تظل فيها البيانات المخزّنة مؤقتًا في المتجر بعد إلغاء تحميل جميع المشتركين. القيمة الافتراضية هي 60 ثانية، ويمكنكم ضبطها لكل نقطة نهاية.
endpoints: (builder) => ({
  getUser: builder.query({
    query: id => '/users/' + id,
    keepUnusedDataFor: 300, // 5 minutes
  }),
})

الاستطلاع لجلب البيانات المباشرة

مرّروا `pollingInterval` إلى استدعاء الـ hook لإعادة الجلب تلقائيًا كل N من المللي ثانية. وهذا مفيد للوحات المعلومات والتغذيات المباشرة.
const { data } = useGetStatsQuery(undefined, {
  pollingInterval: 5000, // refetch every 5 seconds
});

وسائط الاستعلام والتخطي

مرّروا undefined أو استخدموا الخيار `skip` لتخطي استعلام بشكل مشروط. وهذا مفيد عندما لا تكون المعرّفات المطلوبة متاحة بعد.
const { data } = useGetUserQuery(userId, { skip: !userId });

تحويل الاستجابات

استخدموا `transformResponse` لإعادة تشكيل استجابة API قبل تخزينها مؤقتًا. ويحافظ ذلك على نظافة المكوّنات، إذ تتلقى شكلًا مُعالجًا بدلًا من تنسيق API الخام.
getUsers: builder.query({
  query: () => '/users',
  transformResponse: (raw) => raw.data.users,
})

تحقق سريع

ماذا يحدث إذا استدعى مكوّنان hook الخاص بـ RTK Query نفسه بالوسيطة نفسها في الوقت ذاته؟

مراجعة

يعرّف createApi نقاط النهاية وينشئ hooks مضمّنة بالأنواع. أضيفوا المخفِّض والوسيط البرمجي إلى المتجر. وتعيد hooks الاستعلام data وisLoading وisError. وتُخزَّن الاستجابات مؤقتًا ويُزال تكرارها تلقائيًا.

التالي

الدرس التالي: **التحديثات المتفائلة وإبطال التخزين المؤقت** — ستحدّثون واجهة المستخدم فورًا عند تنفيذ طفرة، وستُبطلون البيانات المخزّنة مؤقتًا باستخدام الوسوم.

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

هل درس «‏RTK Query: نقاط النهاية والتخزين المؤقت التلقائي» مجاني؟

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

ماذا ستتعلم في «‏RTK Query: نقاط النهاية والتخزين المؤقت التلقائي»؟

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

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

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

كم من الوقت يستغرق درس «‏RTK Query: نقاط النهاية والتخزين المؤقت التلقائي»؟

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

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

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

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

  1. شرائح Redux Toolkit وcreateSlice
  2. المنطق غير المتزامن باستخدام createAsyncThunk
  3. ‏RTK Query: نقاط النهاية والتخزين المؤقت التلقائي
  4. التحديثات التفاؤلية وإبطال التخزين المؤقت
← العودة إلى React Academy