> Как реализовать бесконечный скролл (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: TYMY
Стек: JavaScript
> Пример ответа
Бесконечный скролл реализуется через отслеживание пересечения контента с областью просмотра. Основной подход - использовать Intersection Observer API для элемента-триггера внизу списка.
Пример реализации на JavaScript:
JAVASCRIPTclass InfiniteScroll {constructor(container, loadMoreCallback) {this.container = container;this.loadMore = loadMoreCallback;this.observer = null;this.init();}init() {// Создаем элемент-триггерthis.sentinel = document.createElement('div');this.sentinel.style.height = '1px';this.container.appendChild(this.sentinel);// Настраиваем Intersection Observerthis.observer = new IntersectionObserver((entries) => {if (entries[0].isIntersecting) {this.loadMore();}}, { threshold: 0.1 });this.observer.observe(this.sentinel);}destroy() {if (this.observer) {this.observer.disconnect();}}}// Использованиеconst scrollContainer = document.getElementById('list');const infiniteScroll = new InfiniteScroll(scrollContainer, async () => {const newItems = await fetchMoreData(); // ваша функция загрузкиappendItems(newItems);});
Ключевые моменты:
IntersectionObserverэффективнее обработчиковscroll, так как не вызывает перерасчетов на каждом скролле.- Элемент-триггер должен быть последним в списке.
- Важно добавить защиту от повторных вызовов (debounce) и обработку ошибок загрузки.
- Для обратной совместимости можно использовать полифил для
IntersectionObserver.
> Похожие задачи по frontend
Как реализовать функцию memo для кеширования результатов вызовов по аргументам в JavaScript
Уровень: seniorКатегория: Технические вопросы
Компания: 1221 Systems
Стек: JavaScript
Как избежать конкатенации чисел как строк в функции суммы аргументов в JavaScript?
Уровень: seniorКатегория: Технические вопросы
Компания: Газпромбанк
Стек: JavaScript
Как создать и выполнить промис через конструктор в JavaScript
Уровень: seniorКатегория: Технические вопросы
Компания: TYMY
Стек: JavaScript
Для чего нужен тип Symbol в JavaScript?
Уровень: seniorКатегория: Технические вопросы
Компания: Иннотех
Стек: JavaScript
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью