select下拉框---无限滚动加载

news/2024/11/28 21:47:48/

需求: select的下拉框,后端做了分页,此时前段需要同步加分页
解决思路: 考虑到交互和性能,采用触底请求下一页(无限滚动加载)

代码示例:

import { Select, message } from 'antd';
import React, { useEffect, useState } from 'react';const App: React.FC = () => {const [selectArr, setSelectArr] = useState([]); //下拉框数组const [loading, setLoading] = useState(false); //加载loadingconst [hasMore, setHasMore] = useState(true); //是否还有更多数据需要加载const PAGE_SIZE = 10; //每页数量const [page, setPage] = useState(1); //当前页,默认第一页开始//数据处理/下一页/是否继续请求const getSelectArr = () => {if (loading || !hasMore) {return;}setLoading(true);try {const {success,data,errorMsg}=await getSelectArrApi() //api请求const errorMsg = null;if (success) {setSelectArr((prevData) => [...prevData, ...data]); // 更新数据(eg:第二页和第一页合并数组,第三页和前两页合并...)setPage(page + 1); //更新为下一个(eg:第一页变成请求第二页,再第三页..,以此类推...)setHasMore(data.length === PAGE_SIZE); //对比,当返回的新数组长度小于pagesize,则说明,数据已经全部拿到; 反之说明,还有下一页} else {message.error(errorMsg);}setLoading(false);} catch (err) {console.error(err);}};//滚动时操作函数const handleScroll = (event) => {//scrollTop:获取或设置一个元素的内容垂直滚动的像素数。//scrollHeight:一个元素内容高度的度量,包括由于溢出导致的视图中不可见内容。//clientHeight:元素内部的高度(单位像素),包含内边距,但不包括水平滚动条、边框和外边距。const { scrollTop, scrollHeight, clientHeight } = event.target;if (scrollHeight - (scrollTop + clientHeight) < 100) {//滚动加载getSelectArr();}};useEffect(() => {getSelectArr();});return (<SelectshowSearchplaceholder="选择查询的名称"optionFilterProp="children"onChange={(value: string) => console.log(`selected ${value}`)}onSearch={(value: string) => console.log('search:', value)}filterOption={(input, option) =>(option?.label ?? '').toLowerCase().includes(input.toLowerCase())}options={Array.isArray(selectArr) &&selectArr?.map((item) => {return {key: item.id,label: item.name,value: item.id,};})}virtual={true}onPopupScroll={(e) => handleScroll(e)}/>);
};export default App;

代码示例讲解

在这里插入图片描述


http://www.ppmy.cn/news/706394.html

相关文章

迅雷连接转化为http链接

楔子&#xff1a;有的时候&#xff0c;因为迅雷封闭了一些资源的下载&#xff0c;因为版权的保护&#xff0c;所以需要把我们的迅雷地址转化为http地址&#xff0c;使用浏览器或者IDM进行下载。 使用在线的一些工具就可以将地址进行转化。 eg&#xff1a; https://tool.lu/url…

各种资源链接

1.关于sql中使用*的说明&#xff1a;sql中关于使用*的讨论 2.数据库索引不会被使用到的情况&#xff1a;sql不走索引的情况 3.java使用ssh2jar 包进行远程文件操作如何远程操作文件 4.java通过FTP,进行上传下载删除TFPcaozuo远程文件 5.win10下 修改注册表&#xff0c;IE打开默…

不用再为下载而发愁了,提供一款支持115网盘、迅雷、快车、旋风、飞速网盘的专用链接解析出资源的真实地址的软件...

软件介绍&#xff1a;该软件可以将115网盘、迅雷、快车、旋风、飞速网盘的专用链接解析出资源的真实地址&#xff0c;然后就可以直接用IE或者电脑安装的下载软件下载专链的资源了。绿色、轻巧~~~&#xff0c;还可以解决115网盘解析失效的问题。 该软件会智能监视剪切板&#xf…

迅雷的地址解析--把自己的下载地址变成迅雷链接

在网上下东西&#xff0c;很多网站都只支持迅雷下载的&#xff0c;在公司迅雷等P2p工具不能用&#xff0c;其他的直接http的资源不好找 &#xff0c;急呀&#xff01; 昨天&#xff0c;看了迅雷格式的下载地址&#xff0c;突然明白了其中的一些道理&#xff0c;原来是这么一回事…

资源网站链接

1.rpm包下载 www.rpmfind.net ftp://rpmfind.net/linux 2.根据依赖的库文件&#xff0c;查找相应的rpm包 https://pkgs.org/ 3.Cacti相关监控模板https://docs.cacti.net/templates 4.percona各版本备份数据工具下载&#xff08;innobackupex、xtrabackup等&#xff09;https:/…

资源链接集

cdn资源库 https://www.bootcdn.cn/ 印记中文 https://docschina.org/ 浏览器插件 https://www.baidufe.com/fehelper/index/index.html

链接资源

1.数字信号处理 &#xff08;1&#xff09;MP3/4的资料 http://www.mp4tech.net/document/audiocomp/mp3_special.asp MP3及MP4的编解码&#xff0c;含有编解码算法在嵌入式系统上的移植资料 &#xff08;2&#xff09;信号处理 http://www.dspguide.com/pdfbook.htm 一本很…

.NET资源链接

网站&#xff1a;与.NET相关的主要网站 http://msdn.microsoft.com http://gotdotnet.com http://msdn.microsoft.com/msdnmag http://codeproject.com http://aspalliance.com http://aspadvice.com http://c-sharpcorner.com http://codeguru.com http://www.theserverside.n…