React / سلوك تطبيق منسق / الدرس 11
حدود التوجيه والتنقل
ميز عرض React من توجيه العنوان واحفظ الروابط الأصلية ونسق الهوية والتحميل.
في هذه الصفحة
أهداف الدرس
- المسار حد تطبيق
- عرض نقل الموقع دون اختراع موجه
- تنسيق العمر والانتظار والأخطاء
المسار حد تطبيق
لا تتضمن React موجها كاملا؛ يربط الإطار أو المكتبة الموقع بالمكونات والبيانات والخادم. اختر تكاملا مدعوما لا قراءات location متناثرة. يمثل العنوان ما يصلح للمشاركة وقد يبقى التحرير محليا. ميز المعاملات والاستعلام والحالة والتحليل والتفويض؛ فالمطابقة لا تمنح الوصول الذي يفرضه الخادم.
حفظ دلالات التنقل
استخدم الروابط للوجهات والأزرار للأفعال، ولتحفظ وصلة الموجه href والمفاتيح وسلوك التبويب. لا تجعل التنقل div نقر. بين الحالي مثل aria-current ونسق عنوان الصفحة والتركيز عند تغير الرئيسي؛ لا يكفي تغير الشجرة. اختبر الرجوع والتقدم والدخول المباشر والتحديث والمفقود ضمن النشر المختار.
عرض نقل الموقع دون اختراع موجه
المثال عرض جزئي للموقع بالجزء hash لا توصية إنتاجية. يشترك مع تنظيف ويطابق قيمتين ويحفظ الروابط. يختلف عن مسارات الخادم ولا ينفذ التعشيق والمحملات والانتظار وكل المفقود. يوضح أن الموقع حالة خارجية باشتراك لا تعيد React قراءتها تلقائيا. يملك التكامل الحقيقي ذلك.
import { useEffect, useState } from "react";
export default function App() { const [hash, setHash] = useState(() => window.location.hash); useEffect(() => { const update = () => setHash(window.location.hash); window.addEventListener("hashchange", update); return () => window.removeEventListener("hashchange", update); }, []); return <main><nav aria-label="Local demonstration"><a href="#intro">Introduction</a> <a href="#practice">Practice</a></nav><h1>{hash === "#practice" ? "Practice" : "Introduction"}</h1><p>Limited hash demonstration, not a complete router.</p></main>; }
Following Practice changes the heading to Practice.
يقود الرابط الأصلي اشتراكا منظفا ويعرض حالتين محليتين فقط.
فصل اختيار المسار من العرض
يتلقى المثال معرفا من props ويختار من خريطة محلية. قد يقدمه موائم إطار بعد التحقق وسياسة الوصول، فيستقل العرض عن الحزمة ويسهل اختباره. ينتج الغياب حالة صريحة. لا تحول نص المسار إلى مفتاح موثوق دون تحقق ولا تضم سرا بالحزمة لأن رابطه مخفي.
const records = { a: "Alpha workshop", b: "Beta workshop" };
function RecordScreen({ id }) { const title = records[id]; return title ? <article><h2>{title}</h2><p>Known local record.</p></article> : <p>Record not found</p>; }
export default function App() { return <main><h1>Route adapter boundary</h1><RecordScreen id="b" /></main>; }
Route adapter boundary
Beta workshop
Known local record.
يستهلك العرض معرفا مستقلا عن النقل وللمجهول نتيجة غياب.
تنسيق العمر والانتظار والأخطاء
قد يحفظ الانتقال تخطيطا أو يعيد تركيب جزء وحالته، فاختر الهوية لا العشوائية. احم المحملات من التنقل القديم وميز المنع والغياب والشبكة والصيغة. اربط التحليلات بحد التزام موثق لتجنب عد المتروك. يحدد توثيق التكامل الرسمي النشر والخادم اللذين لا تحددهما واجهة المكونات.
الأخطاء الشائعة وإصلاحها
ينجح النقر ويفشل الدخول المباشر
- لماذا يحدث؟
- لم ينسق الخادم والنشر.
- كيف تصلحه؟
- اتبع عقد التكامل المختار.
- كيف تتجنب تكراره؟
- اختبر التحديث والمباشر.
يعد إخفاء الرابط تفويضا
- لماذا يحدث؟
- اختلط العرض بالوصول.
- كيف تصلحه؟
- افرضه بحد المورد الموثوق.
- كيف تتجنب تكراره؟
- اختبر المباشر غير المأذون.
يغير التنقل المحتوى دون توجيه
- لماذا يحدث؟
- أغفل العنوان والتركيز والحالي.
- كيف تصلحه؟
- طبق سياسة تنقل ميسرة.
- كيف تتجنب تكراره؟
- اختبر الرحلة كاملة.
اختبر فهمك
1. ماذا يغطي اختبار دخول مباشر لمسار متداخل؟
اعرض الحل المشروح
اطلب العنوان ضمن الخادم المقصود وافحص البيانات والتفويض ثم التحديث والرجوع والتقدم. لا يثبت اختبار مكون خدمة المسار أو حماية سجلاته.
2. لماذا تستقل شاشة السجل عن الموجه حيث يمكن؟
اعرض الحل المشروح
تقبل مدخلات متحققة وحالات صريحة بعقد صغير، ويملك الموائم التحليل والتكامل. يسهل ذلك الاختبار ويحد انتشار تفاصيل الإطار.
أهم ما تعلمته
- تعرض React ويملك التكامل سياسة الموقع.
- احفظ الروابط الأصلية والإتاحة.
- ليست المطابقة تفويضا.