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.
Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%