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 الكامل بالعربي.