لماذا يتخلف ذلك؟
إذا كان عند تقديم طاولة ضخمة مع نوع من الرسوم المتحركة الانتقالية ، فلن يتم تنفيذ أي شيء آخر ، فسيخلف التطبيق ، وسيعاني المستخدم.
في معظم الحالات ، عندما نستخدم مستمع الحدث لإنشاء جدول مع التمرير اللانهائي ، لا نحتاج فقط إلى إجراء العمليات الحسابية المرتبطة بمنفذ العرض وارتفاع الصف ، ولكن نكتب أيضًا الكثير من المنطق في معالج التمرير لمنع إعادة الرسم كثيرًا ، حيث إن استدعاء setState
.
الكود سيكون شيء مثل هذا:
componentDidMount() { window.addEventListener('scroll', this.handleScroll) } handleScroll(e) {
ولكن هناك طريقة أخرى لتطبيق التمرير اللانهائي لجدول ، دون معرفة أي شيء عن قيم النافذة أو قيم الإلحاق.
هذا هو IntersectionObserver . التعريف من w3c :
توضح هذه المواصفة API التي يمكن استخدامها لمعرفة مدى رؤية عناصر DOM وموضعها ("الأهداف") بالنسبة للعناصر الموجودة فيها.
عند استخدام هذه الطريقة ، لن تحتاج إلى معرفة ارتفاع السطر أو أعلى إطار العرض أو أي قيمة أخرى للقيام بالرياضيات.
يتمثل المفهوم في ترتيب نقاط الارتساء مع مؤشرات في كل نقطة تحكم وفي كل مرة يتم فيها تشغيل المرساة ، احصل على قيمة المؤشر وأعد رسم الجدول. بفضل هذا ، لا تحتاج إلى القيام بأي سحر رياضي مع ارتفاع DOM و viewport.
مرساة الزناد للمؤشر 1
تقديم المزيد من الخطوط
سيكون رمز مع IntersectionObserver
شيء مثل هذا.
handleSentinel = (c) => { if(!this.observer) {