0Pricing
React Academy · درس

IntersectionObserver للتأثيرات المحفَّزة بالتمرير

استخدم IntersectionObserver داخل useEffect لتحفيز التحريكات والتحميل الكسول والتمرير اللانهائي

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

ما الذي يفعله IntersectionObserver

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

دالة استدعاء المراقب والإدخال

تتلقى دالة الاستدعاء مصفوفة من كائنات IntersectionObserverEntry، كائنًا واحدًا لكل عنصر تتم مراقبته. يحتوي كل إدخال على قيمة منطقية isIntersecting (تكون true عند الظهور)، ورقم intersectionRatio بين 0 و1 (نسبة الجزء الظاهر حاليًا من العنصر). استخدم هاتين القيمتين لتحديد حالة الظهور.

إنشاء observer داخل useEffect

أنشئ observer داخل useEffect واستدعِ observer.observe(ref.current) لبدء مراقبة العنصر. يجب إرفاق ref بعنصر DOM الذي تريد تتبعه. أنشئ observer بعد تحميل المكوّن حتى تكون قيمة ref.current متاحة.

التنظيف: unobserve وdisconnect

داخل دالة التنظيف في useEffect، استدعِ observer.unobserve(element) لإيقاف مراقبة عنصر محدد، أو observer.disconnect() لإيقاف جميع عمليات المراقبة. يؤدي نسيان التنظيف إلى استمرار observer بعد إزالة المكوّن، مما قد يسبب أخطاء أو تسرّبات في الذاكرة.

خيار threshold

يتحكم خيار threshold في وقت استدعاء دالة الاستدعاء. تؤدي قيمة 0 إلى الاستدعاء فور ظهور أي بكسل من العنصر. ولا تؤدي قيمة 1 إلى الاستدعاء إلا عند ظهور العنصر بالكامل. ويمكنك أيضًا تمرير مصفوفة مثل [0, 0.5, 1] لتلقي عمليات استدعاء عند مستويات ظهور متعددة.

خيار rootMargin

يوسّع rootMargin مساحة التقاطع الفعالة أو يقلّصها باستخدام صياغة شبيهة بـ CSS: تؤدي '100px 0px' إلى الاستدعاء قبل دخول العنصر إلى إطار العرض بمقدار 100 بكسل. استخدم '-100px' للاستدعاء فقط عندما يصبح العنصر داخل إطار العرض بمقدار 100 بكسل. يفيد ذلك في التحميل المسبق أو التحريك قبل ظهور العنصر بالكامل.

التحميل الكسول للصور

لتحميل الصور تحميلًا كسولًا، عيّن السمة data-src بدلًا من src في البداية. عندما يطلق المراقب إشعارًا مع isIntersecting: true، انسخ data-src إلى src لبدء طلب الشبكة. ثم استدعِ observer.unobserve(entry.target) لأن الصورة تحتاج إلى التحميل مرة واحدة فقط.

الرسوم المتحركة المُشغَّلة بالتمرير

لإضافة رسوم متحركة للظهور التدريجي، أضف فئة CSS عندما تصبح قيمة isIntersecting صحيحة: element.classList.add('visible'). عرّف الانتقال في CSS: .card { opacity: 0; transform: translateY(20px); transition: opacity 0.4s, transform 0.4s; } و.card.visible { opacity: 1; transform: none; }. يطلق المراقب هذا المشغّل بكفاءة.

التحليلات: تتبع المحتوى الذي تمت مشاهدته

يُعد IntersectionObserver مناسبًا جدًا لتتبع المشاهدة. عندما يصبح عنصر يضم السمة data-analytics-id متقاطعًا مع عتبة مقدارها 0.5، أطلق حدثًا تحليليًا. يقيس هذا بدقة أقسام المحتوى التي قرأها المستخدمون فعليًا، وهو أكثر موثوقية بكثير من النسبة المئوية البسيطة لعمق التمرير.

مراقبة عناصر متعددة

يمكن لمثيل واحد من IntersectionObserver مراقبة عناصر متعددة، وذلك باستدعاء observer.observe(element) لكل عنصر. تتشارك جميع العناصر المراقَبة في دالة الاستدعاء والخيارات نفسها. استخدم entry.target داخل دالة الاستدعاء لتحديد العنصر الذي أدى إلى إطلاق الإشعار.

بناء خطاف useInView

يعيد الخطاف القابل لإعادة الاستخدام useInView القيمة [ref, inView]. أرفق ref بأي عنصر واقرأ inView لمعرفة ما إذا كان العنصر مرئيًا حاليًا. يقبل الخطاف كائن options لتحديد threshold وrootMargin. يجعل هذا التجريد تأثيرات التمرير تصريحية في أي مكوّن.

عتبة IntersectionObserver

ماذا تعني عتبة IntersectionObserver التي تساوي 0؟

مراجعة الدرس: IntersectionObserver

يتتبع IntersectionObserver مستوى ظهور العناصر بكفاءة باستخدام isIntersecting وintersectionRatio. احرص دائمًا على التنظيف باستخدام unobserve أو disconnect. استخدم threshold للتحكم في نقطة التشغيل، وrootMargin لتوسيع منطقة الكشف. طبّقه في التحميل الكسول والرسوم المتحركة وتتبع التحليلات.

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

هل درس «IntersectionObserver للتأثيرات المحفَّزة بالتمرير» مجاني؟

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

ماذا ستتعلم في «IntersectionObserver للتأثيرات المحفَّزة بالتمرير»؟

استخدم IntersectionObserver داخل useEffect لتحفيز التحريكات والتحميل الكسول والتمرير اللانهائي تتمرن على React Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

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

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

كم من الوقت يستغرق درس «IntersectionObserver للتأثيرات المحفَّزة بالتمرير»؟

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

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

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

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

  1. Clipboard API: النسخ واللصق في React
  2. Geolocation API في مكوّنات React
  3. Notifications API ومعالجة الأذونات
  4. IntersectionObserver للتأثيرات المحفَّزة بالتمرير
← العودة إلى React Academy