ErrorBoundary حدود الخطأ (Error Boundary)

آخر تحديث: 2026-11-03

ErrorBoundary حدود الخطأ (Error Boundary)

حد الخطأ شبكة أمان على مستوى المكوّن: يصطاد الأخطاء في شجرة الابن ويرسم واجهة بديلة بدل شاشة بيضاء. إنه مكوّن class (getDerivedStateFromError / componentDidCatch) — بلا نظير Hook قبل React 19.

المجموعةالبيانات والهندسة
النوعنمط
منذ الإصدارReact 16

ℹ️ ملاحظة يحوّل المحرّر JSX إلى JavaScript ويعرض الواجهة الحقيقية داخل بيئة معزولة؛ تُركَّب المكوّنات تلقائياً دون استدعاء render يدوي.

📝 الصيغة

class ErrorBoundary extends Component {
  state = { hasError: false }
  static getDerivedStateFromError() { return { hasError: true } }
  componentDidCatch(error, info) { /* report */ }
  render() { return this.state.hasError ? <Fallback/> : this.props.children }
}

⚙️ المعاملات

childrenشجرة الابن المحميّة — أي خطأ رسم داخلها يُصطاد.
fallback (custom)واجهة بديلة: مرّرها كـ prop (fallback={<UI/>}) أو احفظها في حالة الحد.

القيمة المرجعة:لا شيء (مكوّن class). يرسم الأبناء وهو بخير؛ وواجهة بديلة حين يرمي ابنٌ خطأً.

▶ مثال

المثال يعمل مباشرة: يُعرض تلقائياً عند التوسيع وتظهر التعديلات فوراً.

الناتج:

لا شاشة بيضاء: يظهر البديل «حدث خطأ ما، لكن الصفحة حيّة» — صُطِيد خطأ رسم Bomb بواسطة الحد.

💡 النقاط الأساسية

⚠️ تحذير الحدود لا تصطاد: معالجات الأحداث، وردود النداء غير المتزامنة، وأخطاء SSR، أو أخطاءً ترميها هي نفسها. استخدم try/catch في المعالجات.
💡 نصيحة تستخدم المشاريع الإنتاجية عادة حزمة react-error-boundary (واجهة بأسلوب Hook) بدل كتابة class يدويًا.
ℹ️ ملاحظة تعمل الحدود بموضعها في الشجرة: على مستوى المسار تنقذ الصفحة؛ وعلى مستوى بطاقة تُضحّي بواحدة فقط.
المزيد من الحالات قريباً.

📚 دروس ذات صلة

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

س لماذا يجب أن يكون حد الخطأ مكوّن class؟
ج لأن getDerivedStateFromError / componentDidCatch لا لهما صيغة Hook بعد؛ ويفضّل فريق React حزمة react-error-boundary.
س هل يصطاد حد الخطأ أخطاءً تُرمى في معالج حدث؟
ج لا. المعالجات تُنفَّذ خارج الرسم — استخدم try/catch هناك؛ فالحدود تغطّي أخطاء الرسم ودورة الحياة فقط.
س على أي مستوى يوضع الحد؟
ج ضع بحسب «نصف قطر العطل»: مستوى المسار ينقذ الصفحة؛ ومستوى عنصر ينقذ منطقة. ولفّ المناطق الحرجة (مثل أعمدة الكانبان) كل على حدة.
Web-Tutorial.com

فريق Web-Tutorial التقني

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

100%