أنواع Suspense وحدود الأخطاء
استخدم React.Suspense مع المكوّنات الكسولة، واكتب حدود أخطاء متينة (مبنية على الفئات). تعامل مع الأخطاء غير المعروفة بأمان، ووفر أنماط إعادة الضبط.
أنواع Suspense وحدود الأخطاء درس مجاني في TypeScript Academy على CoddyKit. هذا هو الدرس 2 من أصل 2. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في TypeScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة TypeScript Academy 2 دروس في المجموع.
مقدمة
الهدف: تحميل المكوّنات عند الحاجة باستخدام React.lazy وSuspense، وإضافة Error Boundary ذي نوع محدد يعرض واجهة بديلة ودية ويسجّل التفاصيل.
- Suspense = واجهة التحميل
- Error Boundary = واجهة أخطاء وقت التشغيل
- التعامل الآمن مع أخطاء unknown
Lazy + Suspense
يعيد React.lazy نوع مكوّن. لفّه داخل Suspense لعرض fallback أثناء تحميل وحدته.
import React, { Suspense } from "react"
const LazyWidget = React.lazy(async () => import("./Widget"))
export default function App() {
return (
<div style={{ display: "grid", gap: 8 }}>
<Suspense fallback={<span>Loading…</span>}>
<LazyWidget />
</Suspense>
</div>
)
}تحديد أنواع خصائص Lazy
تُستنتج الخصائص من التصدير الافتراضي للوحدة المستوردة's. ويبقى موقع الاستدعاء محدد الأنواع بالكامل.
import React, { Suspense } from "react"
// Ensure props are preserved through lazy
interface ChartProps { title: string; values: number[] }
const Chart = React.lazy(async () => import("./Chart"))
export default function App() {
return (
<Suspense fallback={<span>Loading chart…</span>}>
<Chart title="Sales" values={[10, 20, 15]} />
</Suspense>
)
}تحديد نوع ErrorBoundary
حدّد أنواع معالجات الأخطاء باستخدام unknown، وضيّقها إلى Error عند الحاجة. استخدم React.ErrorInfo للوصول إلى مكدس المكوّن.
import React from "react"
interface Props { fallback: React.ReactNode }
interface State { hasError: boolean; message?: string }
export class ErrorBoundary extends React.Component<Props, State> {
state: State = { hasError: false }
static getDerivedStateFromError(err: unknown): State {
const msg = err instanceof Error ? err.message : String(err)
return { hasError: true, message: msg }
}
componentDidCatch(error: unknown, info: React.ErrorInfo) {
// log error & component stack safely
console.error("ErrorBoundary", error, info.componentStack)
}
render() {
if (this.state.hasError) {
return this.props.fallback || <span>Something went wrong</span>
}
return this.props.children
}
}تركيب الحدود
اجمع بين Suspense (التحميل) وError Boundary (الأخطاء). فهما يعالجان جانبين مختلفين، ويمكن تداخلهما لكل قسم.
import React, { Suspense } from "react"
import { ErrorBoundary } from "./ErrorBoundary"
const Page = React.lazy(async () => import("./Page"))
export default function App() {
return (
<div style={{ display: "grid", gap: 8 }}>
<ErrorBoundary fallback={<span>Failed to load page</span>}>
<Suspense fallback={<span>Loading page…</span>}>
<Page />
</Suspense>
</ErrorBoundary>
</div>
)
}أنماط إعادة الضبط
نصائح إعادة الضبط:
- أعد ضبط ErrorBoundary بتغيير key الخاص به.
- وفّر زر “حاول مرة أخرى” لإعادة الجلب أو إعادة التحميل.
- اجعل الواجهات البديلة صغيرة وسهلة الوصول.
التحقق من أنواع الحدود
تحقق سريع: كيف تلتقط أخطاء وقت العرض مع واجهة بديلة ذات نوع محدد؟
مراجعة
مراجعة: يتولى Suspense معالجة التحميل، بينما تتولى Error Boundaries معالجة الأخطاء. حدّد أنواع أخطاء unknown بعناية، ووفر استراتيجيات لإعادة الضبط.
الأسئلة الشائعة
هل درس «أنواع Suspense وحدود الأخطاء» مجاني؟
نعم — نص درس «أنواع Suspense وحدود الأخطاء» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة TypeScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة TypeScript Academy 2 دروس في المجموع.
ماذا ستتعلم في «أنواع Suspense وحدود الأخطاء»؟
استخدم React.Suspense مع المكوّنات الكسولة، واكتب حدود أخطاء متينة (مبنية على الفئات). تعامل مع الأخطاء غير المعروفة بأمان، ووفر أنماط إعادة الضبط. تتمرن على TypeScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ TypeScript Academy؟
لا تُشترط خبرة سابقة. TypeScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 2.
كم من الوقت يستغرق درس «أنواع Suspense وحدود الأخطاء»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس TypeScript Academy هذا؟
نعم. كل درس في TypeScript Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- الخطافات المخصصة باستخدام الأنواع العامة والاستنتاج
- أنواع Suspense وحدود الأخطاء