useInfiniteScroll

一个进行探底检测(精确检测容器滚动到底部的状态),并调用提供的回调函数的 React Hook,常用来实现简单的自定义滚动加载逻辑。

如果你需要更多更全、更业务化、高度集成的丰富功能,可以查看 useInfiniteList

演示

源码
Loading:
false
isLoadDone:
false
Item Count:
0

用法

请查看 API。

源码

点击下方链接跳转 GitHub 查看源代码。

API

const { isLoading, isLoadDone } = useInfiniteScroll(elementTarget, onLoadMore, options)

元素目标 ElementTarget

ElementTarget 是一个联合类型,代表可以被定位的各种元素。

更多详情,请参见 ElementTargetElementTarget 类型

当加载更多时 onLoadMore

当滚动事件被触发时将会调用的函数。

type OnLoadMoreCallback = (previousReturn: R | undefined) => R | Promise<R>

选项 Options

export type UseInfiniteScrollOptions<T extends HTMLElement = HTMLElement> = {
  /**
   * 距离滚动容器底部的距离
   *
   * @defaultValue 0
   */
  distance?: number
  /**
   * 滚动方向
   *
   * @defaultValue 'bottom'
   */
  direction?: 'top' | 'bottom' | 'left' | 'right'
  /**
   * 每次滚动事件之间的间隔
   *
   * @defaultValue 100
   */
  interval?: number
  /**
   * 检查是否还可以加载更多
   */
  canLoadMore?: (el: T) => boolean
  /**
   * 滚动事件回调函数
   */
  onScroll?: (event: Event) => void
}

返回值

export type UseInfiniteScrollReturns = {
  /**
   * 加载状态
   */
  isLoading: boolean
  /**
   * 加载完成状态
   */
  isLoadDone: boolean
}