useInfiniteScroll
A React Hook that performs a bottom-detection (accurately detecting when a container has scrolled to the bottom) and invokes a provided callback function, commonly used for implementing simple custom scroll loading logic.
If you need more comprehensive, business-oriented, and highly integrated features, consider checking out useInfiniteList.
Demo
Usage
See API for more details.
Source
Click links below to view source on GitHub.
API
const { isLoading, isLoadDone } = useInfiniteScroll(elementTarget, onLoadMore, options)
ElementTarget
ElementTarget
is a union type that represents various kinds of elements that can be targeted.
See ElementTarget or ElementTarget Types for more details.
onLoadMore
A function that will be called when the scroll event is triggered.
(previousReturn: R | undefined) => R | Promise<R>
Options
export type UseInfiniteScrollOptions<T extends HTMLElement = HTMLElement> = {
/**
* distance from the bottom of the scroll container
*
* @defaultValue 0
*/
distance?: number
/**
* scroll direction
*
* @defaultValue 'bottom'
*/
direction?: 'top' | 'bottom' | 'left' | 'right'
/**
* interval between each scroll event
*
* @defaultValue 100
*/
interval?: number
/**
* check if can load more
*/
canLoadMore?: (el: T) => boolean
/**
* scroll event callback
*/
onScroll?: (event: Event) => void
}
Returns
export type UseInfiniteScrollReturns = {
/**
* loading state
*/
isLoading: boolean
/**
* load done state
*/
isLoadDone: boolean
}