React Native / ملكية العمل غير المتزامن والبيانات / الدرس 10
مهايئات التنقل ومدخلات الروابط العميقة
عامل هوية المسار كمدخل تطبيق متحقق منه، واجعل مكتبة التنقل وإعداد الرابط الأصلي صريحين.
في هذه الصفحة
أهداف الدرس
- تحتاج React Native إلى تكامل تنقل مختار
- مرّر قيمة وجهة صغيرة عبر مهايئ
- حلّل العناوين الخارجية قبل حل السجل
تحتاج React Native إلى تكامل تنقل مختار
لا تحدد المكونات الأساسية وحدها مكدس التطبيق أو تبويباته أو ربط العناوين أو استعادة الحالة. يقدم الإطار أو مكتبة التنقل هذه العقود وله اعتماديات متوافقة تخصه. سجّل التكامل المالك للسجل وعمر الشاشة قبل نسخ استدعاء تنقل من مشروع آخر. ليس فتح المسار تفويضا للوصول إلى سجله. وقد تتجاوز الروابط العميقة القائمة المعتادة للمدخلات؛ فتحقق من المعرّف المعيب والمفقود وغير المتاح عند حد المسار، وافرض الصلاحية الحالية عند حد البيانات أو الأمر المعتمد.
مرّر قيمة وجهة صغيرة عبر مهايئ
تصدر الوحدة الأولى قيمة وجهة عبر onOpen بدلا من استيراد حزمة تنقل غير محددة. يقرر مهايئ الأب ربطها بالمكدس أو الإطار المختار. يبقى المعرّف المستقر مفهوما إذا تغير ترتيب القائمة أثناء فتح الوجهة، خلاف موضع المصفوفة. تجنب تمرير نماذج عرض متغيرة كاملة عبر الوسائط، لأنه يخفي افتراضات العمر والتسلسل. ويحدد المهايئ هل ينشئ التفعيل المتكرر وجهات مكررة. تتوقع الوحدة القيمة المصدرة فقط، ولا تدعي دفع مسار فعليا.
import {Pressable, Text} from 'react-native';
export default function WorkshopLink({id, onOpen}) {
return <Pressable accessibilityRole="button" accessibilityLabel="Open workshop"
onPress={() => onOpen({name: 'workshop', id})}>
<Text>Open workshop</Text>
</Pressable>;
}
For id w-7, activation emits {name: "workshop", id: "w-7"} to the supplied adapter.
توفر البيئة onOpen وتختبره. ولا تُنفذ مكتبة تنقل أو انتقال مكدس أو تسليم عنوان أصلي.
حلّل العناوين الخارجية قبل حل السجل
يقبل البرنامج الثاني أصل HTTPS مصطنعا وشكل مسار واحدا، ويرفض بيانات الاعتماد والاستعلام أو الجزء غير المتوقع، ويستخرج معرّفا ضيقا. يعمل التحليل هنا كنموذج Node مستقل؛ وتحتاج بيئة URL والربط في React Native إلى فحص توافق منفصل. لا يثبت المسار المعروف وجود الورشة أو صلاحية المستخدم. لا تستبدل فشل التحليل بسجل افتراضي اعتباطي. وثّق المخططات والمضيفين وصيغ الوسائط والتعافي من غير المدعوم، كي لا يبدو الرابط المعيب مسارا ناجحا.
function workshopRoute(raw) {
let url;
try { url = new URL(raw); } catch { return null; }
if (url.protocol !== 'https:' || url.hostname !== 'learn.example.invalid'
|| url.port || url.username || url.password || url.search || url.hash) return null;
const match = /^\/workshops\/(w-[0-9]+)$/.exec(url.pathname);
return match ? {name: 'workshop', id: match[1]} : null;
}
console.log(JSON.stringify(workshopRoute('https://learn.example.invalid/workshops/w-7')));
console.log(workshopRoute('https://other.example.invalid/workshops/w-7'));
{"name":"workshop","id":"w-7"}
null
تُحلل نطاقات invalid المحجوزة محليا ولا يُتصل بها أبدا. وتثبت النتيجة سياسة الصياغة فقط.
نسّق الرابط الأول والأحداث اللاحقة والإلغاء
تميز Linking العنوان الأول من أحداث URL التي تسلّم أثناء تشغيل التطبيق. يحدد إعداد المنصة الأصلي الروابط الواصلة، فلا يثبت محلّل نقي تكامل الروابط الشاملة أو مرشحات النوايا. امتلك اشتراكات الأحداث ونظفها وفقا للبيئة المختارة. يحتاج المحرر القابل للإلغاء أيضا إلى سياسة مسودة ومغادرة لزر الرجوع المادي والإيماءات والإغلاق البرمجي، لا زر Cancel المرئي وحده. يجب أن تحل استعادة مسار قديم ملكية الحساب وتوافر البيانات الحاليين. المسار المحفوظ إشارة تنقل، وليس منحة وصول دائمة.
افحص الدخول والخروج وتغير الملكية
اختبر الفتح المعتاد والتفعيل المتكرر والإلغاء والدخول الخارجي المباشر والمسارات المجهولة والسجلات المفقودة وفشل الصلاحية. تحقّق من عودة Back لموضع مفهوم وانتقال التركيز بصورة مناسبة بعد تغير التقديم. عند تغير الحساب أبطل حالة الوجهة الخاصة وارفض النتائج القديمة غير المتزامنة. تغطي اختبارات المسار في Node التحليل فقط؛ وتحتاج الحزمة المجهزة والإطار وربط الروابط الأصلي وإتاحة الهدف إلى أدلتها. لا تشغّل الدورة نطاقا خارجيا أو رابط جهاز أو حزمة تنقل أو سير حساب، ولا تعرض واجهة خاصة بمكتبة كأنها متاحة للجميع.
الأخطاء الشائعة وإصلاحها
اختيار رابط عميق سجلا افتراضيا مقنعا
- لماذا يحدث؟
- استُبدل فشل التحليل بمعرّف اعتباطي بصمت.
- كيف تصلحه؟
- أعد حالة مسار غير مدعوم أو تعاف صريحة.
- كيف تتجنب تكراره؟
- اختبر المضيف المجهول والوسائط الزائدة والمسار المعيب.
فتح فهرس مسار سجلا خاطئا بعد الفرز
- لماذا يحدث؟
- مثل الوسيط موضع قائمة لا الهوية.
- كيف تصلحه؟
- مرّر معرّفا مستقرا وحل البيانات الحالية.
- كيف تتجنب تكراره؟
- أعد الترتيب أثناء بقاء التفاصيل مفتوحة.
تسمية نجاح المحلّل دعم روابط أصلية
- لماذا يحدث؟
- عُمم دليل الصياغة على ربط المنصة وتسليمها.
- كيف تصلحه؟
- افحص الإطار المجهز والهدف الأصلي مستقلا.
- كيف تتجنب تكراره؟
- سجّل حد الرابط الذي اختُبر فعليا.
اختبر فهمك
1. لماذا ترفض workshopRoute مسارا يبدو صحيحا على مضيف آخر؟
اعرض الحل المشروح
الأصل المقبول جزء من عقد هذا المسار. قد تسمح مطابقة pathname وحده بتفسير عنوان غير مرتبط بوصفه مدخل تطبيق موثوقا. وحتى الأصل المقبول يحتاج إلى حل السجل وفحوص الصلاحية المعتمدة؛ فالتحليل لا يمنح الوصول.
2. هل يعكس إغلاق المحرر تلقائيا تغييرات النموذج المشترك؟
اعرض الحل المشروح
لا. إذا عدّلت التغييرات النموذج المعتمد بالفعل، فإن إغلاق التنقل يغير التقديم فقط. استخدم مسودة مستقلة وعقد اعتماد أو إلغاء صريحا. اختبر جميع طرق المغادرة المدعومة، حتى لا يتجاوز زر الرجوع المادي أو إيماءة السياسة عرضا.
أهم ما تعلمته
- تحتاج React Native إلى تكامل تنقل مختار
- افحص الدخول والخروج وتغير الملكية