Capítulo 16 de 20
The infinite-scroll example reserves one loader row while another page exists. It watches the last virtual item and requests the next page only when the loader enters the rendered range.
const rowVirtualizer = useVirtualizer({
count: hasNextPage ? allRows.length + 1 : allRows.length,
getScrollElement: () => parentRef.current,
estimateSize: () => 100,
overscan: 5,
})
React.useEffect(() => {
const [lastItem] = [...rowVirtualizer.getVirtualItems()].reverse()
if (
lastItem?.index >= allRows.length - 1 &&
hasNextPage &&
!isFetchingNextPage
) {
fetchNextPage()
}
}, [
hasNextPage,
fetchNextPage,
allRows.length,
isFetchingNextPage,
rowVirtualizer.getVirtualItems(),
])
isFetchingNextPage.