0Pricing
React Academy · درس

دمج Virtualization مع جلب البيانات

نفّذوا التمرير اللانهائي عبر بدء جلب البيانات عند وصول القائمة الافتراضية إلى نهايتها.

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

نمط التمرير اللانهائي

يحمّل التمرير اللانهائي مزيداً من البيانات عندما يقترب المستخدم من نهاية القائمة، بدلاً من استخدام ترقيم صفحات بأزرار صفحات صريحة. وعند دمجه مع المحاكاة الافتراضية، يتيح لك تصفح مجموعات بيانات ضخمة بسلاسة.

تعرض القائمة الصفوف المرئية فقط، بينما تُجلَب البيانات الجديدة في الخلفية قبل أن يصل المستخدم إلى أسفل القائمة مباشرةً.

دالة رد الاتصال onItemsRendered

تقبل مكوّنات القوائم في react-window دالة رد اتصال باسم onItemsRendered، وتُبلّغ عن فهارس العناصر المعروضة حالياً. وهي توفّر فهارس بدء وانتهاء العناصر المرئية والعناصر الإضافية.

تُعد هذه الدالة نقطة ربطك مع التمرير، إذ تتيح لك اكتشاف مدى تقدّم المستخدم في القائمة دون ربط أحداث التمرير الخام يدوياً.

اكتشاف اقتراب overscanStopIndex من itemCount

لمعرفة وقت الجلب، قارن overscanStopIndex من onItemsRendered مع itemCount الحالي. فعندما تقترب نافذة العرض من نهاية البيانات المحمّلة، تكون هناك حاجة إلى المزيد.

يوفّر استخدام فهرس نهاية النطاق الإضافي مهلة قصيرة، إذ يطلق الجلب قبل أن يصل المستخدم فعلياً إلى الصف الأخير بقليل.

بدء الجلب قرب النهاية

عندما يتجاوز فهرس النهاية حداً معيناً، كأن يكون ضمن عدد عناصر يعادل ما يظهر في شاشة واحدة من itemCount، تستدعي دالة الجلب الخاصة بك للصفحة التالية. احمِ هذا الاستدعاء حتى لا ترسل طلبات متداخلة متعددة.

يمنع استخدام علامة تحميل أو التحقق من وجود عملية جلب قيد التنفيذ إرسال طلبات مكررة أثناء تمرير المستخدم عبر منطقة التشغيل.

مؤشر تحميل كعنصر أخير

من الحيل الأنيقة تعيين itemCount إلى عدد العناصر المحمّلة زائد واحد ما دامت هناك بيانات إضافية. يعرض الصف الإضافي مؤشراً دوّاراً، مما يشير إلى أن الجلب جارٍ.

بمجرد وصول البيانات الجديدة، يزداد العدد ويُستبدل صف المؤشر بمحتوى حقيقي، فتتلقى واجهة المستخدم ملاحظات مرئية سلسة.

react-window-infinite-loader

تغلّف الحزمة المصاحبة react-window-infinite-loader هذا المنطق نيابةً عنك. توفّر لها isItemLoaded وloadMoreItems وitemCount، فتستدعي دالة التحميل الخاصة بك أثناء اقتراب المستخدم من الصفوف غير المحمّلة.

وتتولى تتبّع النطاقات التي جرى تحميلها وتمنع استدعاءات التحميل المتكررة، مما يبسّط إنشاء تمرير لانهائي متين.

صفوف نائبة أثناء الجلب

بالنسبة إلى الفهارس غير المحمّلة، يمكنك عرض صفوف نائبة أو هيكلية بدلاً من الفراغات. تتحقق دالة العرض مما إذا كان العنصر عند فهرس معين محمّلاً، وتعرض هيكلاً إذا لم يكن كذلك.

تحافظ الهياكل على التخطيط وتوضح تقدّم العملية، وهو ما يعطي شعوراً أفضل من المساحة الفارغة أثناء وصول الصفحة التالية.

صفوف الخطأ وإعادة المحاولة

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

يحافظ ذلك على قابلية استخدام القائمة بعد حدوث عطل عابر، ويمنح المستخدم طريقة واضحة للتعافي دون إعادة تحميل الصفحة بأكملها.

الترقيم بالمؤشر مقابل الترقيم بالإزاحة

هناك أسلوبان شائعان للترقيم يزوّدان القوائم اللانهائية بالبيانات. يطلب الترقيم بالإزاحة البيانات باستخدام رقم الصفحة أو عدد التخطي، بينما يطلب الترقيم بالمؤشر العناصر التي تلي مؤشراً غير شفاف يشير إلى آخر عنصر تمت رؤيته.

يكون الترقيم بالمؤشر أكثر موثوقية عموماً مع البيانات المتغيرة باستمرار، لأنه يتجنب التحرك والتكرار اللذين قد تسببهما الإزاحات عند إدراج عناصر جديدة.

الدمج مع React Query وuseInfiniteQuery

يتكامل React Query وuseInfiniteQuery بشكل طبيعي مع المحاكاة الافتراضية. فهو يدير الصفحات التي جرى جلبها، والمؤشر التالي، وحالتي التحميل والخطأ، بينما يعرض react-window الصفحات المسطّحة بكفاءة.

تسطّح الصفحات في مصفوفة واحدة للقائمة، وتستدعي fetchNextPage من حد onItemsRendered، فتحصل تلقائياً على التخزين المؤقت وإعادة المحاولة.

اختبار سريع: شرط تشغيل التمرير اللانهائي

حدّد الوقت المناسب لجلب مزيد من البيانات في قائمة لانهائية تستخدم المحاكاة الافتراضية.

مراجعة: المحاكاة الافتراضية مع جلب البيانات

يحمّل التمرير اللانهائي الصفحات عندما يقترب المستخدم من النهاية. وتُبلغ onItemsRendered عن الفهارس، بينما يخبرك مقارنة overscanStopIndex مع itemCount بموعد الجلب، مع حماية ذلك من الطلبات المكررة.

استخدم الصفوف النائبة وصفوف الخطأ، واستعن بـ react-window-infinite-loader لتتبّع الحالة، وبالترقيم بالمؤشر مع البيانات المتغيرة باستمرار. يدير React Query وuseInfiniteQuery الصفحات والمؤشرات والحالات بالتوازي مع عرض react-window.

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

هل درس «دمج Virtualization مع جلب البيانات» مجاني؟

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

ماذا ستتعلم في «دمج Virtualization مع جلب البيانات»؟

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

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

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

كم من الوقت يستغرق درس «دمج Virtualization مع جلب البيانات»؟

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

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

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

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

  1. مشكلة عرض القوائم الكبيرة
  2. FixedSizeList: عرض آلاف العناصر
  3. VariableSizeList: ارتفاعات الصفوف الديناميكية
  4. دمج Virtualization مع جلب البيانات
← العودة إلى React Academy