useParams useParams يقرأ المعاملات
آخر تحديث: 2026-11-03
useParams useParams يقرأ المعاملات
يُعيد useParams كائنًا بقطع المسار الديناميكية للمسار المطابق حاليًا: حين يُكتب المسار /users/:id، يمنحك زيارة /users/42 الكائن { id: '42' }. تعتمد عليه صفحات التفاصيل والتعديل لمعرفة أي سجلّ تعرض، فوحدها URL تقود المحتوى. تذكّر أن المعامل دائمًا سلسلة نصية، فقارنه بـ Number(id) قبل أي فحص رقمي.
| المجموعة | التوجيه وإدارة الحالة |
|---|---|
| النوع | خطاف |
| منذ الإصدار | React Router 6.4 |
ℹ️ ملاحظة يحوّل المحرّر JSX إلى JavaScript ويعرض الواجهة الحقيقية داخل بيئة معزولة؛ تُركَّب المكوّنات تلقائياً دون استدعاء render يدوي.
📝 الصيغة
import { useParams } from 'react-router-dom'
// Route: <Route path="/users/:id" element={<UserDetail />} />
function UserDetail() {
const { id } = useParams() // { id: '42' }, note that it is a string
const user = users.find(u => u.id === id)
return <h1>User {user?.name}</h1>
}
القيمة المرجعة:كائن مفاتيحه أسماء المعاملات المُعلَنة بـ : في المسار وقيمه قطع URL الفعلية (سلاسل نصية، مثل { id: '42' }).
▶ مثال
المثال يعمل مباشرة: يُعرض تلقائياً عند التوسيع وتظهر التعديلات فوراً.
الناتج:
النقر على «زيارة /users/2» يغيّر المعامل إلى 2 وتعرض الصفحة بوب — نفس أثر useParams في قراءة قطعة ديناميكية من URL (عرض توضيحي محاكى).
💡 النقاط الأساسية
⚠️ تحذير المعامل دائمًا سلسلة نصية: id === 2 لن يكون صحيحًا أبدًا، فاستدعِ Number(id) أولًا أو قارن السلاسل باستمرار.
💡 نصيحة المعامل الاختياري بـ :id؟، والبديل العام بـ * (splat)؛ وفي المسارات المتداخلة يدمج useParams معاملات كل مسار أب.
ℹ️ ملاحظة لقراءة سلسلة الاستعلام (?tab=2) استخدم useSearchParams بدلًا منه.
🏷️ المزيد من التوجيه والحالة
💡 حالات ذات صلة
المزيد من الحالات قريباً.
📚 دروس ذات صلة
❓ الأسئلة الشائعة
س هل يمنحني useParams رقمًا أم سلسلة نصية؟
ج سلسلة نصية. قطعة URL نصّها الطبيعة، فحوّلها بـ Number(id) عند الحاجة إلى قيمة رقمية.
س هل يُعاد تركيب المكوّن عند تغيّر المعامل؟
ج لا. الانتقال من /users/1 إلى /users/2 يغيّر المعاملات فقط ويُعاد استخدام نسخة المكوّن، فطلب بيانات يعتمد على id ينتمي إلى Effect بـ id في اعتماداته.
س كيف أُعلن عدة قطع ديناميكية؟
ج المسار /users/:uid/posts/:pid يُعلن عدة دفعة واحدة ويعيد useParams الكائن { uid, pid }.