Проверяет знание библиотек и нативных API для реализации бесконечной прокрутки и ленивой загрузки контента в веб-приложениях.
Бесконечная прокрутка и ленивая загрузка решают одну задачу: не грузить всё сразу, а подгружать данные или ресурсы по мере необходимости. Это снижает нагрузку на сеть, ускоряет первую отрисовку и экономит память браузера.
IntersectionObserver отслеживает появление элемента в viewport и триггерит загрузку.react-infinite-scroll-component, react-intersection-observer, vue-infinite-loading.react-window, react-virtualized, @tanstack/react-virtual рендерят только видимые элементы.loading="lazy" и библиотека lazysizes.useInfiniteQuery из React Query или useSWRInfinite.const sentinel = document.querySelector('#sentinel');
const observer = new IntersectionObserver(([entry]) => {
if (entry.isIntersecting) {
loadMoreItems(); // подгружаем следующую страницу
}
});
observer.observe(sentinel);
import { FixedSizeList } from 'react-window';
<FixedSizeList
height={500}
width={300}
itemCount={items.length}
itemSize={50}
>
{({ index, style }) => (
<div style={style}>{items[index].title}</div>
)}
</FixedSizeList>
Виртуализация особенно полезна, когда элементов тысячи: в DOM одновременно живут только видимые строки, что резко снижает потребление памяти.
Итог: для простой подгрузки данных достаточно IntersectionObserver или react-infinite-scroll-component, а для больших списков с тяжёлыми элементами стоит применять виртуализацию через react-window или react-virtualized.
Уровень
Рейтинг:
4
Сложность:
5
Навыки
JavaScript
React
Ключевые слова
Подпишись на React Developer в телеграм
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию