当前位置:网站首页>实现下拉加载更多
实现下拉加载更多
2022-08-09 10:03:00 【高桥靓仔】
import React, { useState, useEffect } from 'react'
import produce from "immer"
import { Select } from 'antd'
const { Option } = Select
const SelectAntd = () => {
const data = [//源数据
1, 2, 3, 4, 5,
6, 7, 8, 9, 10,
11, 12, 13, 14, 15,
16, 17, 18, 19, 20,
21, 22, 23, 24, 25,
26, 27, 28, 29, 30,
31, 32, 33, 34, 35,
36, 37, 38
]
const [lazyData, setLazyData] = useState([])
const [count, setCount] = useState(1)
const [pageData, setPageData] = useState([])
useEffect(() => {//初始化需要懒加载的数据可以滑动
setLazyData(pageData[0])
}, [pageData])
useEffect(() => {
setPageData(paging(data, 10))
},[])
const optionRender = () => {//渲染option
return lazyData?.map(i => (
<Option value={i} key={i}>{i}</Option>
))
}
const handleScroll = (e) => {//判断滑动到底部
const { scrollTop, scrollHeight, clientHeight } = e.target
return scrollHeight - scrollTop === clientHeight
}
const paging = (sourceData, pageSize) => {//页量
const pageNum = Math.ceil(sourceData.length / pageSize)//页数
return new Array(pageNum).fill([]).map((item, index) => (
sourceData.slice(index * pageSize, (index + 1) * pageSize)
))
}
// const pageData = paging(data, 10)//分页后的元组
const lazyLoad = (e) => {//触发懒加载
if (handleScroll(e) && pageData[count]) {
setLazyData(produce(lazyData, daft => {
daft = daft.push(...pageData[count])
}))
setCount(count + 1)
}
}
return (
<Select
showSearch
style={
{ width: 200 }}
placeholder="Select a person"
onPopupScroll={(e) => { lazyLoad(e) }}//滚动时触发
>
{optionRender()}
</Select>
)
}
export default SelectAntd
实现下拉到底部,懒加载的效果:
边栏推荐
猜你喜欢
随机推荐
自定义类型:结构体,枚举,联合
EndNoteX9 OR X 20 Guide
[相机配置] 海康相机丢包配置环境
2.Collection interface
【Linux】宝塔面板设置MySQL慢查询日志,未走索引日志
Source GBase database, oracle quote "ORA - 01000: beyond the shop open the cursor"
[项目配置] 配置Qt函数库和ui界面库的封装并调用的项目
class object property method class member
Redis 缓存主动更新策略
Throwing a question? The execution speed of the Count operation in the Mysql environment is very slow. You need to manually add an index to the primary key---MySql optimization 001
字符串函数和内存函数
五个不同事物隔离级别,七个事物传播行为
EndNoteX9 OR X 20 指南
MySQL约束关系,你必须要知道的知识点!
需求侧电力负荷预测(Matlab代码实现)
LeetCode56:合并区间 C语言解法,注解详细 一看就懂!
Thread,Runnable,ExecutorService线程池控制下线程量
cannot import name ‘load_offloaded_weights‘ from ‘accelerate.utils‘ (/home/huhao/anaconda3/envs/huha
动态内存管理
学长告诉我,大厂MySQL都是通过SSH连接的