0Pricing
React Academy · درس

الاشتراك في واجهات API للمتصفح

ابنوا hooks تشترك في matchMedia وnavigator.onLine وwindow history وlocalStorage باستخدام useSyncExternalStore.

الاشتراك في واجهات API للمتصفح درس مجاني في React Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في React Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة React Academy 4 دروس في المجموع.

الاشتراك في matchMedia

تُعد استعلامات الوسائط في المتصفح مخزنًا خارجيًا مثاليًا. يمكنك الاشتراك في استعلام matchMedia للوضع الداكن أو لنقطة توقف، وإعادة التصيير كلما تبدّلت حالة المطابقة.

تضيف دالة subscribe مستمع تغيير إلى MediaQueryList، بينما تعيد getSnapshot قيمة matches المنطقية الحالية، مما يمنحك وصولًا تفاعليًا إلى الظروف المتجاوبة.

وصلة useMediaQuery

يتيح تغليف هذا المنطق في وصلة useMediaQuery للمكوّنات الاستعلام عمّا إذا كان استعلام معين مطابقًا باستدعاء واحد. وتبني الوصلة subscribe وgetSnapshot مستقرتين حول سلسلة استعلام معينة.

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

حالة navigator.onLine

يوفر المتصفح أحداث الاتصال وعدم الاتصال، بالإضافة إلى navigator.onLine. ويتيح الاشتراك في هذه الأحداث وقراءة الخاصية الحصول على حالة اتصال مباشرةً داخل React.

تعيد getSnapshot قيمة navigator.onLine، بينما تضيف subscribe مستمعين إلى حدثَي online وoffline، كي يُحدّث المكوّن نفسه عند تغيّر الاتصال.

وصلة useOnlineStatus

يتيح تجميع ذلك في وصلة useOnlineStatus لأي مكوّن عرض لافتات عدم الاتصال أو تعطيل الإجراءات عند انقطاع الشبكة. وتستخدم وثائق React الرسمية هذا المثال نفسه لشرح الوصلة.

إنها حالة صغيرة لكنها توضيحية، إذ تُحوّل إشارة خارجية من المتصفح بسهولة إلى جزء من الحالة التفاعلية.

الاشتراك في window.location

يمكنك الاشتراك في تغييرات التنقل بالاستماع إلى حدث popstate وقراءة window.location في getSnapshot. وهذا يشكّل أساس أجهزة توجيه مخصصة بسيطة مبنية على History API.

وبما أن pushState لا يُصدر حدث popstate، غالبًا ما تُصدر أجهزة التوجيه المخصصة حدثًا خاصًا بها، كي تُحدَّث اللقطة أيضًا عند التنقل البرمجي.

‏localStorage بين علامات التبويب عبر حدث storage

يُطلَق حدث storage في علامات التبويب الأخرى عند تغيّر localStorage، مما يجعله مخزنًا خارجيًا يمكنك الاشتراك فيه. وتقرأ getSnapshot القيمة الحالية، بينما تستمع subscribe إلى أحداث storage.

يتيح ذلك المزامنة بين علامات التبويب، بحيث يؤدي تحديث قيمة في علامة تبويب إلى تحديث المكوّنات تفاعليًا في علامة تبويب أخرى.

‏deviceOrientation

يُبلغ حدث deviceorientation عن الميل الفيزيائي للجهاز. ويؤدي الاشتراك فيه وقراءة الزوايا الأحدث في getSnapshot إلى تحويل بيانات الحركة إلى حالة تفاعلية.

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

غلاف IntersectionObserver

يُعلمك IntersectionObserver بوقت دخول عنصر إلى إطار العرض أو مغادرته. ويمكنك تغليفه بحيث تنشئ subscribe المراقب، وتعيد getSnapshot أحدث قيمة لـ isIntersecting.

يوفر ذلك مؤشر isVisible تفاعليًا لتحميل الصور كسولًا، أو تشغيل الرسوم المتحركة، أو تنفيذ علامات التمرير اللانهائي.

‏ResizeObserver لحجم العنصر

يُبلغ ResizeObserver عن تغيّرات حجم العنصر. ويتيح تغليفه لـ subscribe مراقبة عنصر، ولـ getSnapshot إعادة أبعاده الحالية، بحيث تستجيب المكوّنات لتغيّرات التخطيط بدقة.

وهذا أكثر كفاءة ودقة من الاستماع إلى تغيير حجم window عندما تهتم بعنصر محدد بدلًا من إطار العرض بأكمله.

التركيب في useWindowSize

يمكنك دمج حدث تغيير الحجم مع الوصلة لبناء useWindowSize تعيد العرض والارتفاع الحاليين. وتضيف subscribe مستمعًا لتغيير الحجم، بينما تقرأ getSnapshot أبعاد window.

تذكّر إعادة لقطة مستقرة، وذلك بتخزين كائن الحجم مؤقتًا كي لا تتسبب الأبعاد غير المتغيّرة في عمليات إعادة تصيير، مما يحافظ على كفاءة التركيب.

تحقق سريع: تنفيذ useMediaQuery

حلّل كيفية استخدام وصلة useMediaQuery لوصلة المخزن.

مراجعة: الاشتراك في واجهات برمجة المتصفح

تُعد واجهات برمجة كثيرة في المتصفح مخازن خارجية يمكنك ربطها باستخدام useSyncExternalStore: إذ يُستخدم matchMedia لنقاط التوقف، وnavigator.onLine للاتصال، وlocation وstorage للتنقل والمزامنة بين علامات التبويب، بالإضافة إلى مراقبات الاتجاه والتقاطع وتغيير الحجم.

يتبع كل منها البنية نفسها: subscribe تضيف المستمعين وتزيلهم، وgetSnapshot مستقرة. ويمكن تركيبها في وصلات مثل useMediaQuery وuseOnlineStatus وuseWindowSize.

الأسئلة الشائعة

هل درس «الاشتراك في واجهات API للمتصفح» مجاني؟

نعم — نص درس «الاشتراك في واجهات API للمتصفح» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة React Academy، انتقل إلى CoddyKit PRO. تتضمن دورة React Academy 4 دروس في المجموع.

ماذا ستتعلم في «الاشتراك في واجهات API للمتصفح»؟

ابنوا hooks تشترك في matchMedia وnavigator.onLine وwindow history وlocalStorage باستخدام useSyncExternalStore. تتمرن على React Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ React Academy؟

لا تُشترط خبرة سابقة. React Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «الاشتراك في واجهات API للمتصفح»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس React Academy هذا؟

نعم. كل درس في React Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. مشكلة الاشتراك في المخازن الخارجية
  2. واجهة API useSyncExternalStore ومعلماتها
  3. الاشتراك في واجهات API للمتصفح
  4. بناء مخزن مخصص باستخدام useSyncExternalStore
← العودة إلى React Academy