初学React,做一个简易的滚动加载

2023-10-29

想做一个简单的滚动鼠标加载更多商品的功能,虽然有相关插件更方便,不过想手写一个简易版的。

我把这个板块放在最下方,再下面就是一个小小的底部导航了,所以就判断滚动到页面底部就行。

判断滚动到底部需要知道3个值: 滚动的高度、可视区域的高度、滚动条内容的总高度;

如果(滚动的高度 + 可视区域的高度 )>= 滚动条内容的总高度========就说明到底部了。

先初始化几个值:

const [currentPage, setPage] = useState(1);//currentPage表示目前是第几页,初始第1页

const [noData, setNoData] = useState(false);//noData表示没有数据时,初始false就是有数据,因为不能无限加载,总会有尽头的时候

const [listData, setListData] = useState([]);//listData表示商品列表,初始空数组

const currentPageRef=useRef(null);//需要把最新的currentPage值保存起来

const noDataRef=useRef(null);//需要把最新的noData值保存起来

因为 useState函数会异步执行,无法及时获得最新的第几页,直接获取就一直是第1页不变,但是加载更多商品又需要第几页做参数,所以通过useRef()一个变量来保存更新后的currentPage(第几页)

在函数组件中useEffect()可以代替componentDidMount和com

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

初学React,做一个简易的滚动加载 的相关文章

随机推荐

  • powerdesigner在列表上显示comment的操作

    默认显示选项中没有comment的选项 那么我们就自定义一下 一 自定义comment选项 1 选择菜单 Model gt Extensions 2 插入一行 点击属性 3 鼠标右键点击 Profile 点击 Add Metaclasses
  • Java程序员的福音:Java项目教学之图书管理系统(含源代码)

    1 图书管理系统项目演示 图书管理系统分析 定义Book类 完成主界面和选择 完成查询所有图书 完成添加图书 完成删除图书 完成修改图书 使用Debug追踪调试 2 图书管理系统之标准Book类 我们发现每一本书都有书名和价格 定义一个Bo
  • 京东一面:MySQL 中的 distinct 和 group by 哪个效率更高?

    先说大致的结论 完整结论在文末 在语义相同 有索引的情况下group by和distinct都能使用索引 效率相同 在语义相同 无索引的情况下 distinct效率高于group by 原因是distinct 和 group by都会进行分
  • 【android12-linux-5.1】【ST芯片】【RK3588】【LSM6DSR】HAL源码分析

    一 环境介绍 RK3588主板搭载Android12操作系统 内核是Linux5 10 使用ST的六轴传感器LSM6DSR芯片 二 芯片介绍 LSM6DSR是一款加速度和角速度 陀螺仪 六轴传感器 还内置了一个温度传感器 该芯片可以选择I2
  • Angular4.0_路由守卫

    路由守卫 只有当用户已经登录并拥有某些权限时 才能进入某些路由 一个由多个表单组成的向导 例如注册流程 用户只有在当前路由的组件中填写了满足要求的信息才可以导航到下一个路由 当用户未执行保存操作 而试图离开当前导航时 提醒用户 CanAct
  • 华为机试HJ27 查找兄弟单词

    HJ27 查找兄弟单词 Python 题目 解题思路 代码 结果 题目 解题思路 1 多组输入 需要循环 2 首先定义一个兄弟单词的判断函数 相等则返回False 字符串中的字符排序后相同则为兄弟单词 3 循环所有待查字符串 统计所有兄弟单
  • Windows 远程桌面连接ubuntu及xrdp的一些小问题(远程桌面闪退、连接失败、tab补全功能,无菜单栏,error - problem connecting )

    1 远程桌面闪退 shell可以用的问题 1 需要在该用户目录创建一个 xsession touch xsession 2 里面写 xfce4 session 一句话就行 echo xfce4 session gt xsession 3 然
  • Leetcode刷题指南

    参考 https blog csdn net qq 39521554 article details 79160815 二 刷题方法 方法一 按照题目出现频率刷题 顺序参考文章最后的部分 方法二 标签法 按照网站给大家排列的不同tags 起
  • CentOS 8 下搭建 MySQL 一主一从

    需求 现有两台服务器192 168 137 129和192 168 137 130 在这两台服务器之间搭建一主一从MySQL 129为主 130为从 步骤 通过 CentOS 8通过二进制安装 MySQL 的步骤在 129 和 130 服务
  • Java基础-对象的内存分配与初始化(一定要明白的干货)

    参考 https www cnblogs com wxw7blog p 7349204 html 首先 什么是类的加载 类的加载由类加载器执行 该步骤将查找字节码 classpath指定目录 并从这些字节码中创建一个Class对象 Java
  • 3 css

    定位 为什么需要定位 1 某个元素可以自由的在一个盒子内移动位置 并且压住其他盒子 2 定位可以在让盒子自由在某个盒子内移动位置或者固定屏幕中某个位置 并且可以压住其他盒子 定位组成 将盒子定在某一位置 也就是来摆盒子 定位 定位模式 边偏
  • 如何将typora直接导入CSDN博客

    1 打开首页 2 点击头像 打开内容管理 3 点击左上角的发布中的文章4 点击工具栏中的导入5 找到之前用typora软件写的 保存在电脑的 md文件 6 打开就出现下面的预览页面 7 需要再编辑 点击右上角一个笔的图标 出现下面的编辑页面
  • 普罗米修斯搭建过程中遇到的坑

    1 使用后台命令启动不起来 换成使用前台命令启动 报错如下 2 err error loading config from root prometheus prometheus 2 17 0 prometheus yml couldn t
  • 运动目标检测、阴影检测及目标跟踪中用得到的标准测试视频下载(大量IBM提供视频)

    在搜测试视频时 找到andrew31在ilovematlab论坛中分享的网址链接 我转载于此 并做出详细介绍 方便大家以后使用 1 PETS2001的测试视频 http www filewatcher com b ftp ftp cs rd
  • postgreSQL12 主从

    Centos7 安装 postgreSQL 1 基础环境 2 部署主从 2 1 安装postgreSQL 2 2 主节点 2 3 从节点 3 验证主从 1 基础环境 操作系统 CentOS 7 7 PostgreSQL 12 1 主节点 1
  • mysql数据库备份类文件

  • 深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接

    1 内联接 典型的联接运算 使用像 或 lt gt 之类的比较运算符 包括相等联接和自然联接 内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行 例如 检索 students和courses表中学生标识号相同的所有行 2 外联接 外
  • MTK 底层耳机中断上报流程

    文章目录 前言 框架 硬件 背景知识 线控耳机原理图 检测电路解释 正文开始 软件 Linux 驱动代码流程 Android 前言 更新 加量不加价 框架 硬件 背景知识 国标耳机插头信号定义 lt lt lt 左声道 右声道 麦克 地 美
  • 【css

    linear gradient CSS函数创建一个由两种或多种颜色沿一条直线进行线性过渡的图像 其结果是
  • 初学React,做一个简易的滚动加载

    想做一个简单的滚动鼠标加载更多商品的功能 虽然有相关插件更方便 不过想手写一个简易版的 我把这个板块放在最下方 再下面就是一个小小的底部导航了 所以就判断滚动到页面底部就行 判断滚动到底部需要知道3个值 滚动的高度 可视区域的高度 滚动条内