0Pricing
React Academy · درس

استخدام Suspense لحدود البيانات والتعليمات البرمجية

اجمع بين Suspense والتحميل الكسول ومكتبات البيانات المستقبلية لإنشاء حالات تحميل واضحة.

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

مرحبًا

في هذا الدرس ستستخدمون React Suspense مع React.lazy لتقسيم الشيفرة، ومع مكتبات البيانات لعرض واجهة بديلة أثناء تحميل المحتوى.

ما هو Suspense؟

Suspense هو مكوّن من React يلتقط المكونات في شجرته الفرعية التي تكون معلّقة، أي تنتظر تحميل شيء ما، ثم يصيّر واجهة بديلة بدلًا منها.
<Suspense fallback={<Spinner />}>
  <MyComponent />
</Suspense>

استخدام Suspense مع React.lazy

ينشئ React.lazy() مكوّنًا يتم تحميله من import ديناميكي. وعند استخدامه داخل Suspense، تُصيّر الواجهة البديلة حتى يتم تنزيل حزمة JavaScript.
const HeavyChart = React.lazy(() => import('./HeavyChart'));

<Suspense fallback={<p>Loading chart...</p>}>
  <HeavyChart />
</Suspense>

مكونات lazy متعددة تحت حد واحد

تتشارك المكونات lazy المتعددة الموجودة تحت حد Suspense نفسه في واجهة بديلة واحدة. ينتظر React تحميل جميع المكونات قبل عرض المحتوى. استخدموا حدودًا متداخلة للتحميل المستقل.

حدود Suspense متداخلة

تعشّقوا حدود Suspense لعرض أجزاء واجهة المستخدم أثناء تحميلها بدلًا من انتظار اكتمال كل شيء. تلتقط الحدود الخارجية عمليات التحميل الأبطأ، بينما تتولى الحدود الداخلية عمليات التحميل السريعة.
<Suspense fallback={<PageSkeleton />}>
  <Header />
  <Suspense fallback={<ChartSkeleton />}>
    <LazyChart />
  </Suspense>
</Suspense>

استخدام Suspense مع مكتبات البيانات

تعلّق مكتبات مثل React Query، مع suspense: true، وRelay المكونات التي تنتظر البيانات، تمامًا كما يحدث مع التحميل الكسول. وتوفّر حدود Suspense الواجهة البديلة أثناء التحميل.
const { data } = useQuery({ queryKey: ['users'], queryFn: fetchUsers,
  suspense: true }); // component suspends until data is ready
// No loading check needed — data is always available here

الدالة use() في React 19

في React 19، تتيح لكم الدالة `use(promise)` قراءة promise مباشرةً داخل المكوّن. وإذا كان promise قيد الانتظار، يُعلَّق المكوّن وتعرض أقرب حدود Suspense الواجهة البديلة الخاصة بها.
import { use } from 'react';

function Profile({ userPromise }) {
  const user = use(userPromise); // suspends until resolved
  return <p>{user.name}</p>;
}

SuspenseList لعرض العناصر بترتيب محدد

تنسّق React.SuspenseList، وهي تجريبية، عدة حدود Suspense كي تظهر بترتيب محدد، مثلًا من الأعلى إلى الأسفل أو كلها دفعة واحدة، مما يمنع ظهور واجهة المستخدم بشكل فوضوي.

Suspense لا يلتقط الأخطاء

يتعامل Suspense مع حالات التحميل فقط. ولا يلتقط الأخطاء الناتجة عن عمليات الجلب الفاشلة. ادمجوا Suspense مع Error Boundary للتعامل مع حالات التحميل والخطأ معًا.
<ErrorBoundary fallback={<Error />}>
  <Suspense fallback={<Spinner />}>
    <DataComponent />
  </Suspense>
</ErrorBoundary>

الشاشات الهيكلية كواجهات بديلة

بدلًا من مؤشرات التحميل، استخدموا الشاشات الهيكلية كواجهات بديلة لـ Suspense. وهي تخطيطات مؤقتة تطابق شكل المحتوى، مما يقلل تغيّر التخطيط عند وصول المحتوى.

تحقق سريع

ماذا يُعرض للمستخدمين أثناء تنزيل حزمة مكوّن React.lazy()؟

مراجعة

يغلّف Suspense المكونات التي قيد التحميل ويعرض واجهة بديلة. استخدموا React.lazy لتقسيم الشيفرة، وأنماط suspense في مكتبات البيانات لتحميل البيانات، وعشّقوا الحدود لعرض مستقل وتدريجي. وادمجوه مع Error Boundary للتعامل الكامل مع الأخطاء.

اكتمل المقرر

تهانينا! لقد أتممت **Async Patterns in React: Promises & Concurrency**. أصبحت الآن قادرًا على التعامل مع حالات التسابق، واستخدام useTransition وuseDeferredValue لإنشاء واجهات مستخدم متجاوبة، والاستفادة من Suspense لتحديد حدود التحميل.

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

هل درس «استخدام Suspense لحدود البيانات والتعليمات البرمجية» مجاني؟

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

ماذا ستتعلم في «استخدام Suspense لحدود البيانات والتعليمات البرمجية»؟

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

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

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

كم من الوقت يستغرق درس «استخدام Suspense لحدود البيانات والتعليمات البرمجية»؟

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

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

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

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

  1. حالات التنافس وتنظيف Effect
  2. استخدام useTransition لتحديثات واجهة غير حاجبة
  3. استخدام useDeferredValue لتأخير إدخال المستخدم
  4. استخدام Suspense لحدود البيانات والتعليمات البرمجية
← العودة إلى React Academy