تخطَّ إلى المحتوى

redirect()

إعادة توجيه المستخدم من الخادم redirect()

تُعيد توجيه المستخدم فورًا لمسار آخر — تُستخدم بمكوّنات الخادم وServer Functions وRoute Handlers.

تُستورد من next/navigation. عند استدعائها بمكوّن خادم، ترمي داخليًا خطأ خاصًا يوقف تصيير المقطع الحالي فورًا — لهذا لازم تُستدعى خارج try/catch. تُرسل تحويلة 307 (مؤقتة) افتراضيًا، أو 303 داخل Server Actions.

بمكوّن عميل، تقدر تستخدمها أثناء التصيير مباشرة، لكن مو داخل معالِج حدث (event handler) زي onClick — لهذي الحالة استخدم useRouter().push بدلها.

الصياغة

import { redirect } from 'next/navigation';
redirect(path: string, type?: 'replace' | 'push'): never

📄 مثال

import { redirect } from 'next/navigation';

export default async function Profile({ params }: { params: Promise<{ id: string }> }) {
  const { id } = await params;
  const team = await fetchTeam(id);

  if (!team) redirect('/login');
  // ...
}

أهم النقاط

العنصرالوظيفة
pathمسار نسبي أو رابط خارجي كامل
type'replace' (افتراضي) أو 'push' — بلا تأثير بمكوّنات الخادم

💡 نصائح عملية

  • استدعِها خارج جسم try دايمًا — لأنها ترمي خطأ داخليًا لإيقاف التصيير
  • بمكوّن عميل داخل معالِج حدث (onClick مثلًا)، استخدم useRouter().push بدلها

⚠️ أخطاء شائعة

  • كتابة return redirect() — غير ضروري لأن نوعها never ولا ترجع أبدًا
  • استدعاؤها جوّه try/catch بدون انتباه — الخطأ الداخلي اللي ترميه يُلتقط بالخطأ بـ catch ويكسر التوجيه

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار NEXTJS الكامل بالعربي.