Бесконечная прокрутка и разбиение на страницы с useInfiniteQuery
Получайте данные постранично и плавно загружайте следующие страницы с помощью useInfiniteQuery.
«Бесконечная прокрутка и разбиение на страницы с useInfiniteQuery» — бесплатный урок React Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения React Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс React Academy содержит 4 уроков всего.
Добро пожаловать
Что такое useInfiniteQuery?
Базовая настройка
const { data, fetchNextPage, hasNextPage } = useInfiniteQuery({
queryKey: ['posts'],
queryFn: ({ pageParam }) =>
fetch('/api/posts?cursor=' + pageParam).then(r => r.json()),
initialPageParam: 0,
getNextPageParam: (lastPage) => lastPage.nextCursor ?? undefined,
});getNextPageParam
getNextPageParam: (lastPage, allPages) => {
return lastPage.hasMore ? lastPage.nextCursor : undefined;
}Отображение всех страниц
const allPosts = data.pages.flatMap(page => page.items);
return (
<ul>
{allPosts.map(post => <li key={post.id}>{post.title}</li>)}
</ul>
);Кнопка «Загрузить ещё»
<button
onClick={() => fetchNextPage()}
disabled={!hasNextPage || isFetchingNextPage}
>
{isFetchingNextPage ? 'Loading...' : hasNextPage ? 'Load More' : 'No more posts'}
</button>Бесконечная прокрутка с IntersectionObserver
const observerRef = useRef();
useEffect(() => {
const observer = new IntersectionObserver(entries => {
if (entries[0].isIntersecting && hasNextPage) fetchNextPage();
});
if (observerRef.current) observer.observe(observerRef.current);
return () => observer.disconnect();
}, [hasNextPage, fetchNextPage]);
<div ref={observerRef} /> {/* sentinel at bottom */}Двунаправленная бесконечная прокрутка
Постраничная и курсорная пагинация
// Offset-based
getNextPageParam: (lastPage) => lastPage.page + 1Повторная загрузка бесконечных запросов
Быстрая проверка
Итоги
Курс завершён
Изучай React с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 88
- Уроки
- 324
Часто задаваемые вопросы
Урок «Бесконечная прокрутка и разбиение на страницы с useInfiniteQuery» бесплатный?
Да — полный текст урока «Бесконечная прокрутка и разбиение на страницы с useInfiniteQuery» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс React Academy, подпишись на CoddyKit PRO. Курс React Academy содержит 4 уроков всего.
Чему я научусь в уроке «Бесконечная прокрутка и разбиение на страницы с useInfiniteQuery»?
Получайте данные постранично и плавно загружайте следующие страницы с помощью useInfiniteQuery. Ты практикуешь React Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать React Academy?
Предыдущий опыт не требуется. React Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Бесконечная прокрутка и разбиение на страницы с useInfiniteQuery»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке React Academy?
Да. Каждый урок React Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Настройка React Query и QueryClient
- Кэширование, время устаревания и фоновые запросы
- Мутации с useMutation
- Бесконечная прокрутка и разбиение на страницы с useInfiniteQuery