BrowserRouter حاوية التوجيه BrowserRouter
آخر تحديث: 2026-11-03
BrowserRouter حاوية التوجيه BrowserRouter
BrowserRouter هي حاوية التوجيه في react-router-dom: تراقب العنوان وتوفّر الموقع الحالي لشجرة المكوّنات كاملة عبر Context. يجب أن تلفّ الطبقة الخارجية للتطبيق حتى تعمل Routes وRoute وLink وبقية واجهات التوجيه. عندها تصبح كل عملية تنقّل دفعةً في السجل بدل إعادة تحميل كاملة، وهو ما يجعل التطبيق ذا الصفحة الواحدة سريعًا للمستخدم.
| المجموعة | التوجيه وإدارة الحالة |
|---|---|
| النوع | مكوّن |
| منذ الإصدار | React Router 6.4 |
ℹ️ ملاحظة يحوّل المحرّر JSX إلى JavaScript ويعرض الواجهة الحقيقية داخل بيئة معزولة؛ تُركَّب المكوّنات تلقائياً دون استدعاء render يدوي.
📝 الصيغة
import { BrowserRouter, Routes, Route } from 'react-router-dom'
createRoot(document.getElementById('root')).render(
<BrowserRouter> {/* listens to the History API and provides the location context */}
<Routes>
<Route path="/" element={<Home />} />
<Route path="/about" element={<About />} />
</Routes>
</BrowserRouter>
)
⚙️ المعاملات
| children | محتوى التطبيق؛ كل مكوّن داخل الحاوية يمكنه قراءة سياق التوجيه. |
|---|---|
| basename | اختياري. بادئة تُضاف لكل المسارات عند نشر التطبيق تحت مسار فرعي، مثلًا basename='/app'. |
القيمة المرجعة:لا شيء (إنه مكوّن). يرسم الأبناء ويبثّ الموقع الحالي ودوال التنقّل إلى الشجرة الفرعية بأكملها.
▶ مثال
المثال يعمل مباشرة: يُعرض تلقائياً عند التوسيع وتظهر التعديلات فوراً.
الناتج:
النقر على زر التنقّل يبدّل الصفحة ويُحاط المسار الحالي بأقواس — تمامًا ما يفعله BrowserRouter داخليًا: يتغيّر المسار، يتحدّث السياق، ويُرسم الـ Route المطابق (عرض توضيحي محاكى).
💡 النقاط الأساسية
ℹ️ ملاحظة يستخدم BrowserRouter عناوين URL حقيقية (/about)، فالـ refresh يحتاج أن يرجّع الخادم كل المسارات إلى index.html؛ أما HashRouter مع #/about فلا يتطلب ذلك.
💡 نصيحة في الإصدار 6.4+ يمكن للمشاريع الجديدة استخدام createBrowserRouter + RouterProvider مباشرة: الصياغة أكثر وظيفية وتدعم جلب البيانات المسبق عبر loader.
⚠️ تحذير يجب ألّا يوجد سوى نسخة واحدة من BrowserRouter، وعليها أن تلفّ كل مكوّن يستخدم واجهات التوجيه، فتوضع في قمة شجرة المكوّنات.
🏷️ المزيد من التوجيه والحالة
💡 حالات ذات صلة
المزيد من الحالات قريباً.
📚 دروس ذات صلة
❓ الأسئلة الشائعة
س كيف أختار بين BrowserRouter وHashRouter؟
ج استخدم BrowserRouter كلما أمكن ضبط الخادم على التراجع (عناوين نظيفة، وتحسين أفضل لمحركات البحث)؛ واستخدم HashRouter للاستضافة الثابتة التي لا يمكن تغيير خادمها.
س ماذا أفعل حين أحصل على 404 بعد التحديث؟
ج مسار /about في BrowserRouter هو مسار واجهة أمامية غير موجود على الخادم؛ أعد كتابة كل المسارات إلى index.html (try_files في Nginx، مدعوم افتراضيًا في Vercel وNetlify).
س ما هو createBrowserRouter؟
ج صياغة التوجيه بالبيانات التي ظهرت في 6.4: تصف المسارات في كائن إعداد (مع loaders وactions) وترسمها عبر RouterProvider. وهو مجموعة شاملة من BrowserRouter + Routes.