React滚动加载(无限滚动)功能实现

在用户滚动到接近页面底部时自动加载更多内容

:可以将事件绑定在antd的Table组件中的onScroll中

:也可以将事件绑定在外层的div的onScroll中

javascript 复制代码
const handleScroll = (e) => {
  const { scrollTop, scrollHeight, clientHeight } = e.target;
  if (scrollTop + clientHeight >= scrollHeight - 50 && hasMore) {
    setPageNum((prevPage) => prevPage + 1);
  }
};
  • const { scrollTop, scrollHeight, clientHeight } = e.target;:

    • 这里通过对象解构,从 e.target(即触发滚动事件的元素)中获取了三个重要的属性:
      • scrollTop: 滚动条距离元素顶部的距离,即用户已经滚动了多少距离。
      • scrollHeight: 整个内容的高度,包括滚动在视窗外的部分,即元素的总高度。
      • clientHeight: 可视区域的高度,即用户能直接看到的部分的高度。
  • if (scrollTop + clientHeight >= scrollHeight - 50 && hasMore):

    • 这个条件判断是在检查用户是否滚动到了接近页面底部。具体解释如下:
      • scrollTop + clientHeight: 这是计算当前用户已经滚动的高度加上可视区域的高度,表示用户现在看到的最底部的高度。
      • scrollHeight - 50: 这是指整个内容高度减去 50 像素,表示接近底部(还剩 50 像素)的高度。
    • 判断逻辑 : 如果用户滚动的总高度(scrollTop + clientHeight)大于或等于 scrollHeight - 50,说明用户已经接近页面底部,剩下的内容高度小于等于 50 像素时,且 hasMoretrue(表示还有更多内容可以加载),就会触发加载更多内容的逻辑。
  • setPageNum((prevPage) => prevPage + 1);:

    • 当上述条件满足时,执行这个函数,将当前的页码(pageNum)加 1,从而触发下一页数据的加载。
相关推荐
DYuW5gBmH11 分钟前
Chrome DevTools MCP 让 AI 无缝接管浏览器调试会话
前端·chrome·chrome devtools
echome88816 分钟前
JavaScript Promise 与 async/await 实战:5 个高频异步编程场景的优雅解决方案
开发语言·javascript·ecmascript
qq12_81151751539 分钟前
Java Web 影城会员管理系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】
java·前端·mybatis
摸鱼仙人~1 小时前
Math.js 使用教程
开发语言·javascript·ecmascript
weixin199701080161 小时前
《中控网商品详情页前端性能优化实战》
前端·性能优化
wuhen_n2 小时前
LangChain Agents 实战:构建智能文件管理助手
前端·javascript·人工智能·langchain·ai编程
Vfw3VsDKo2 小时前
Flink源码阅读:Netty通信
java·前端·flink
别抢我的锅包肉2 小时前
【FastAPI】 + SQLAlchemy 异步 ORM 实现完整 CRUD 操作
前端·fastapi
. . . . .2 小时前
抽象语法树 AST
javascript
zero15973 小时前
TypeScript 快速实战系列:基础入门|TypeScript 核心语法 1 小时吃透(必备基础)
javascript·typescript·大模型编程语言