useNavigate useNavigate للتنقّل
آخر تحديث: 2026-11-03
useNavigate useNavigate للتنقّل
يُعيد useNavigate دالة navigate: اذهب إلى الصفحة الرئيسية بعد تسجيل الدخول، عُد إلى القائمة بعد الإرسال، ارفض المستخدمين المجهولين — كل هذه القفزات التي يُحرّكها الكود تستخدمه. navigate(to) يدفع للأمام، وnavigate(-1) يرجع، ويمكن تمرير replace وstate. إنه النظير الأمرّي لـ Link والأداة المناسبة كلما كان الكود — لا المستخدم — هو من يقرر الوجهة التالية.
| المجموعة | التوجيه وإدارة الحالة |
|---|---|
| النوع | خطاف |
| منذ الإصدار | React Router 6.4 |
ℹ️ ملاحظة يحوّل المحرّر JSX إلى JavaScript ويعرض الواجهة الحقيقية داخل بيئة معزولة؛ تُركَّب المكوّنات تلقائياً دون استدعاء render يدوي.
📝 الصيغة
import { useNavigate } from 'react-router-dom'
function LoginButton() {
const navigate = useNavigate()
return (
<button onClick={() => {
// Navigate after a successful login; replace leaves no history entry
navigate('/dashboard', { replace: true })
}}>Sign in</button>
)
}
// navigate(-1) is the browser back button
// navigate('/detail', { state: { from: 'home' } }) carries hidden state
⚙️ المعاملات
| to | الوجهة: سلسلة مسار ('/home')، أو رقم (-1 للرجوع)، أو كائن الصيغة { pathname, search }. |
|---|---|
| options | الوسيط الثاني: { replace: true } يستبدل قيد السجل، و{ state } يحمل بيانات لا تظهر في شريط العنوان. |
القيمة المرجعة:يُعيد دالة navigate(to, options?)؛ استدعاؤها يُطلق القفزة؛ لا ترسم أي واجهة وتغيّر المسار فقط.
▶ مثال
المثال يعمل مباشرة: يُعرض تلقائياً عند التوسيع وتظهر التعديلات فوراً.
الناتج:
النقر على «اذهب لتسجيل الدخول» يلحق login بمكدّس السجل؛ و«الرجوع للرئيسية بـ replace» يطمس القمة بلا أثر؛ و«رجوع» يبرز المكدّس ويعود للصفحة السابقة — سلوكيات push وreplace وback في navigate (عرض توضيحي محاكى).
💡 النقاط الأساسية
💡 نصيحة بعد تسجيل الدخول فضّل navigate('/home', { replace: true }): فلا يعود المستخدم إلى صفحة الدخول عند النقر رجوع.
ℹ️ ملاحظة أزال 6 useHistory لصالح useNavigate، الذي يتولّى أيضًا القفز الرقمي مثل navigate(-2).
⚠️ تحذير لا تستدعِ navigate أثناء الرسم؛ ضعه في رد نداء حدث أو Effect، وإلا أبلغ React عن «Cannot update during render».
🏷️ المزيد من التوجيه والحالة
💡 حالات ذات صلة
المزيد من الحالات قريباً.
📚 دروس ذات صلة
❓ الأسئلة الشائعة
س متى أستخدم navigate ومتى Link؟
ج استخدم Link حين ينقر المستخدم رابطًا؛ واستخدم navigate حين يقرر الكود القفز (إرسال ناجح، فحص صلاحية، عدّاد تنازلي انتهى).
س ماذا يفعل replace: true؟
ج يستبدل قيد السجل الحالي بالجديد، فالرجوع يتخطّى تلك الصفحة — مفيد لصفحات الدخول والدفع الوسيطة حيث قد يُطلق الرجوع إجراءً مكررًا.
س كيف أمرّر بيانات مع التنقّل؟
ج استدعِ navigate('/detail', { state: { from: 'home' } }) واقرأها في الصفحة الوجهة عبر useLocation().state. لا تظهر في شريط العنوان وتبقى بعد التحديث داخل history.state.