صفحات غير موجودة
جزء من قسم أساسيات Next.js في رحلة React على Coddy. الدرس 9 من 47.
المسار الديناميكي متسامح إلى حدّ الخطأ. يطابق app/menu/[slug]/page.jsx المسار /menu/pizza، كما يطابق /menu/asdfgh بالسعادة نفسها، ثم يعرض صفحة dish لـ dish غير موجود.
يمنحك Next.js كلا جزأي الحل.
1. شاشة 404. ملف باسم not-found.jsx، وينتمي إلى نفس مجموعة أسماء الملفات الخاصة مثل page.jsx وlayout.jsx:
// app/not-found.jsx
export default function NotFound() {
return <h1>We don't have that</h1>;
}ضعه في app/not-found.jsx، وسيغطي التطبيق بأكمله: كل عنوان URL لا يطابق أي شيء سيصل إلى هنا، بدلًا من صفحة 404 المضمّنة العادية.
2. المُشغِّل. أحيانًا يطابق عنوان URL مسارًا، لكن البيانات غير موجودة. هذه هي حالة /menu/asdfgh، ولا يمكن إلا لشفرتك معرفة ذلك. استدعِ notFound():
import { notFound } from 'next/navigation';
const dishes = ['pizza', 'pasta'];
export default async function Dish({ params }) {
const { slug } = await params;
if (!dishes.includes(slug)) {
notFound();
}
return <h1>{slug}</h1>;
}لا تُرجع notFound() قيمةً، ولا تُرجعها أنت: فاستدعاؤها يوقف الصفحة عند تلك النقطة ويعرض أقرب ملف not-found.jsx. يمكن لكل ما يأتي بعد if أن يفترض بأمان أن الطبق موجود، ولهذا يأتي الحارس في الأعلى.
التحدي
متوسطيعرض /menu/sushi حاليًا صفحة طبق لطبق غير موجود في القائمة. أصلح هذه الثغرة.
- أكمل الملف
app/not-found.jsx. صدّر مكوّنًا افتراضيًا يعيد عنصر<h1>معid="not-found-title"والنص المطابق تمامًاDish not found. - في
app/menu/[slug]/page.jsx، استوردnotFoundمنnext/navigation. - إذا لم يكن
slugموجودًا في مصفوفةdishes، فاستدعِnotFound()قبل عرض أي شيء.
يجب أن يظل /menu/pizza يعمل.
جرّب بنفسك
import './globals.css';
export const metadata = {
title: 'My App',
};
export default function RootLayout({ children }) {
return (
<html lang="en">
<body>
{children}
</body>
</html>
);
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس أساسيات Next.js
4الخادم والعميل (Server & Client)
نوعان من المكوناتقراءة الخطأسطر 'use client'الحفاظ على أجزاء العميل صغيرةخادم داخل عميلملخص: الخادم والعميل2التوجيه والروابط
المجلدات هي مسارات التوجيهالمسارات المتداخلةربط الصفحاتالمسارات الديناميكيةصفحات غير موجودةملخص: التوجيه3التخطيطات والبيانات الوصفية
التخطيط الرئيسيالتنقل المشتركالتخطيطات المتداخلةالبيانات الوصفية للصفحةالبيانات الوصفية الديناميكيةملخص: التخطيطات6إجراءات الخادم (Server Actions)
ما هو إجراء الخادم (Server Action)؟نماذج تعمل وتتفاعلقراءة بيانات النموذجتحديث الصفحةملخص: إجراءات الخادم