التعامل مع الأخطاء
جزء من قسم أساسيات Next.js في رحلة React على Coddy — الدرس 27 من 47.
عمليات التحميل قد تفشل. قاعدة البيانات معطلة، السجل مفقود، أو حدث خطأ ما. بدون خطة مناسبة، تعبير await واحد سيئ قد يتسبب في تعطيل الشاشة بأكملها.
تُعتبر error.jsx الصورة المنعكسة لـ loading.jsx: الفكرة نفسها، ولكن بنتيجة معاكسة. ضعه بجانب صفحة وسيلتقط أي شيء تطرحه تلك الصفحة أثناء العرض:
app/
menu/
page.jsx
loading.jsx while it works
error.jsx when it doesn'tعلى عكس loading.jsx، فإنه يمتلك متطلبًا إجباريًا واحدًا:
'use client';
export default function Error({ error, reset }) {
return (
<div>
<h2>Couldn't load the menu</h2>
<button onClick={reset}>Try again</button>
</div>
);
}يجب أن يكون error.jsx مكون عميل (client component). السبب موجود بوضوح في JSX: onClick. زر إعادة المحاولة (retry) هو تفاعلية، والتفاعلية تتطلب مكونًا يُرسل إلى المتصفح. إذا أذلت 'use client' فستحصل على خطأ معالج الأحداث (event-handler error) المذكور في الفصل السابق، وفي الصفحة التي كانت مهمتها بالذات هي معالجة الأخطاء.
يتلقى اثنين من الخصائص (props):
error: الـ Error الذي تم طرحه، حتى تتمكن من تسجيلهreset: دالة تقوم بإعادة تقديم (re-render) الجزء الذي فشل. قم باستدعائها وسيحاول الـ page مرة أخرى (again)
إنّ reset هو ما يجعل هذه الشاشة أكثر من مجرد شاشة توقف مفاجئ أفضل. فالخلل المؤقت الذي فشل مرة واحدة غالبًا ما يعمل في المرة الثانية، دون أن يضطر المستخدم لإعادة تحميل أي شيء.
مثل الملفات الخاصة الأخرى، يُغطي error.jsx المجلد الخاص به وكل ما هو متداخل تحته، لذا فإن ملفًا واحدًا بالقرب من الجذر يُعد شبكة أمان لقطاع كامل من الموقع.
جرّب بنفسك
لا يتضمّن هذا الدرس تحدّيًا برمجيًا.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس أساسيات Next.js
4الخادم والعميل (Server & Client)
نوعان من المكوناتقراءة الخطأسطر 'use client'الحفاظ على أجزاء العميل صغيرةخادم داخل عميلملخص: الخادم والعميل2التوجيه والروابط
المجلدات هي مسارات التوجيهالمسارات المتداخلةربط الصفحاتالمسارات الديناميكيةصفحات غير موجودةملخص: التوجيه5البيانات على الخادم
المكونات غير المتزامنة (Async Components)انتظار معلمات المسار (Route Params)جلب البيانات مرتين في وقت واحدحالات التحميلالتعامل مع الأخطاءملخص: جلب البيانات3التخطيطات والبيانات الوصفية
التخطيط الرئيسيالتنقل المشتركالتخطيطات المتداخلةالبيانات الوصفية للصفحةالبيانات الوصفية الديناميكيةملخص: التخطيطات6إجراءات الخادم (Server Actions)
ما هو إجراء الخادم (Server Action)؟نماذج تعمل وتتفاعلقراءة بيانات النموذجتحديث الصفحةملخص: إجراءات الخادم