Rolagem infinita e paginação com useInfiniteQuery
Busque dados paginados e carregue mais páginas de forma contínua com useInfiniteQuery.
Rolagem infinita e paginação com useInfiniteQuery é uma aula grátis de React Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de React Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de React Academy inclui 4 aulas no total.
Boas-vindas
O que é useInfiniteQuery?
Configuração básica
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;
}Renderizando todas as páginas
const allPosts = data.pages.flatMap(page => page.items);
return (
<ul>
{allPosts.map(post => <li key={post.id}>{post.title}</li>)}
</ul>
);Botão Carregar mais
<button
onClick={() => fetchNextPage()}
disabled={!hasNextPage || isFetchingNextPage}
>
{isFetchingNextPage ? 'Loading...' : hasNextPage ? 'Load More' : 'No more posts'}
</button>Rolagem infinita com 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 */}Rolagem infinita bidirecional
Paginação baseada em página versus cursor
// Offset-based
getNextPageParam: (lastPage) => lastPage.page + 1Atualizando queries infinitas
Verificação rápida
Recapitulação
Curso concluído
Perguntas Frequentes
A aula “Rolagem infinita e paginação com useInfiniteQuery” é grátis?
Sim — o texto completo de “Rolagem infinita e paginação com useInfiniteQuery” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de React Academy, atualize para CoddyKit PRO. O curso de React Academy inclui 4 aulas no total.
O que vou aprender em “Rolagem infinita e paginação com useInfiniteQuery”?
Busque dados paginados e carregue mais páginas de forma contínua com useInfiniteQuery. Você pratica React Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar React Academy?
Nenhuma experiência prévia é necessária. React Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Rolagem infinita e paginação com useInfiniteQuery”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de React Academy?
Sim. Cada aula de React Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Configurando o React Query e o QueryClient
- Armazenamento em cache, tempo de obsolescência e nova busca em segundo plano
- Mutações com useMutation
- Rolagem infinita e paginação com useInfiniteQuery