@amreraky/react-infinite-scroller

中文文档
2.0.7发布于 2026/03/27MITTypeScriptCommonJS零依赖近 30 天下载 2521

React 的无限滚动组件( 用于支持 React QQ 18 和 TypeScript)

中文使用文档
文档目录8 节
  1. 安装
  2. 如何使用
  3. 窗口滚动事件
  4. DOM 滚动事件
  5. 自定义父元素
  6. 道具
  7. 解决问题
  8. 双打或不间断呼叫 loadMore

这是叉子 反应-无限滚动器 支助 反应 QQ 18 和类型脚本

反应无限滚动器

npm npm npm

在React中无限地加载一个网格或项目列表. 此组件允许您通过同时支持窗口和可滚动元素来创建简单,轻量级的无限滚动页或元素.

  • QQ 使用窗口或可滚动元素的能力
  • 📏 不需要指定项目高度
  • QQ 支持“ 聊天历史”( 逆向) 模式
  • * 测试了几百个生产地点并使用了全套设备 这个世界!
  • QQ 轻量级替代其它可用的回放卷轴 libs ~ 2.2KB 已修改的 gzipped( g)

安装

npm install @amreraky/react-infinite-scroller --save

如何使用

import InfiniteScroll from '@amreraky/react-infinite-scroller';

窗口滚动事件

<InfiniteScroll
    pageStart={0}
    loadMore={loadFunc}
    hasMore={true || false}
    loader={<div className="loader" key={0}>Loading ...</div>}
>
    {items} // <-- This is the content you want to load
</InfiniteScroll>

DOM 滚动事件

<div style="height:700px;overflow:auto;">
    <InfiniteScroll
        pageStart={0}
        loadMore={loadFunc}
        hasMore={true || false}
        loader={<div className="loader" key={0}>Loading ...</div>}
        useWindow={false}
    >
        {items}
    </InfiniteScroll>
</div>

自定义父元素

您可以定义自定义 parentNode 以滚动计算为基准的元素.

<div style="height:700px;overflow:auto;" ref={(ref) => this.scrollParentRef = ref}>
    <div>
        <InfiniteScroll
            pageStart={0}
            loadMore={loadFunc}
            hasMore={true || false}
            loader={<div className="loader" key={0}>Loading ...</div>}
            useWindow={false}
            getScrollParent={() => this.scrollParentRef}
        >
            {items}
        </InfiniteScroll>
    </div>
</div>

道具

名称需求类型默认说明
children对Node任何可以渲染出的东西(与PropropType的节点相同)
loadMore对Function用户请求更多项目时的回调 。 接收指定要装入的页面的单个参数,例如 . function handleLoadMore(page) { /* load more items here */ } {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢
elementComponent'div'该组件应当构成的元素名称.
hasMoreBooleanfalse是否有更多要装入的项目 。 如果 false。 。 。 .
initialLoadBooleantrue组件是否应该装入第一组项目 .
isReverseBooleanfalse用户滚动到可滚动区域上方时是否要加载新项目 .
loaderComponent在装入更多物品时要制取的反应组件 。 母组件必须有一个独特的密钥道具.
pageStartNumber0装入的第一个页码, 默认为 0,第一页是 1。 。 。 .
getScrollParentFunction如果不是"无限卷"的近亲,则覆盖返回不同卷轴收听器的方法.
thresholdNumber250在项目结束前的像素相距将触发呼叫 loadMore。 。 。 .
useCaptureBooleanfalse代理给 useCapture 选项.
useWindowBooleantrue向窗口添加滚动收听器, 否则, 组件的 parentNode。 。 。 .

解决问题

双打或不间断呼叫 loadMore

如果你遇到双重或不停的呼叫 loadMore 调用, 制作 在添加此组件之前, 请确定您的 CSS 版式工作正常 . 根据容器的高度计算(该单元为: 因此容器的高度必须等于 整个项目高度.

.my-container {
  overflow: auto;
}

此组件不会对您在 API 方面所做的任何假设 打电话 您是否正在装入来自 API 在您的状态/ 减速器中, 以免您重复 API 呼叫 .

loadMore() {
  if(!this.state.isLoading) {
    this.props.fetchItems();
  }
}

版本与发布记录

@amreraky/react-infinite-scroller 共发布 8 个版本,首次发布于 2025/05/21;过去 12 个月发布了 3 个版本。

版本发布日期距今
2.0.7latest2026/03/277 个月前
2.0.62026/03/088 个月前
2.0.52026/01/0110 个月前
2.0.42025/08/051.3 年前
2.0.32025/08/051.3 年前
2.0.22025/05/271.4 年前

关于 @amreraky/react-infinite-scroller 的常见问题

@amreraky/react-infinite-scroller 是什么?

React 的无限滚动组件( 用于支持 React QQ 18 和 TypeScript)

如何安装 @amreraky/react-infinite-scroller?

在项目目录运行 npm install @amreraky/react-infinite-scroller,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(>=16.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@amreraky/react-infinite-scroller 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@amreraky/react-infinite-scroller 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@amreraky/react-infinite-scroller 可以商用吗?

@amreraky/react-infinite-scroller 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@amreraky/react-infinite-scroller 的下载量有多少?

根据 npm 官方下载统计,@amreraky/react-infinite-scroller 在 2026/10/06 – 2026/11/04 这 30 天内被下载 2,521 次,日均约 84 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@amreraky/react-infinite-scroller 还在维护吗?

最新版本 2.0.7 发布于 2026/03/27(7 个月前);至今共发布 8 个版本,其中过去 12 个月发布了 3 个;首次发布于 2025/05/21。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。