React之实现前端分页
文章目录
- 本文提供两种分页思路
- - 纯 js 分页
- - 使用lodash-es实现分页
- 一、纯js分页
- (1)html
- (2)js代码
- 1. list请求函数
- 2. 分页组件函数
- 3. 分页函数
- 二、lodash实现分页
- (1)html代码
- (2)js代码
- 1. 请求函数
- 2. 分页组件函数
- 3. 通过useMemo监听分页
本文提供两种分页思路
- 纯 js 分页
- 使用lodash-es实现分页
一、纯js分页
(1)html
<div className={styles['fre-div']}><Row>{list.map((item): JSX.Element => {return (<Col span={4} key={item.id} className={styles['fre-col']}><div className={styles['fre-col__div']}><p className={styles['fre-col__text']}><span>{item.xxx}次</span></p></div></Col>);},)}</Row></div><PaginationonChange={handlePaginationChange}defaultCurrent={pageIndex}total={sumList.length}pageSize={pageSize}className={styles['page-div']}/>
</div>
(2)js代码
state变量声明不再做过多说明
1. list请求函数
const requestList = useCallback(async (params: CompareFreAnalyParams) => {setLoading(true);//每次请求时需要将数组内原有数据清空setList([]);try {const { result } = await fetchCompareFreAnalyList(params);setSumList(result);//arrSplit 分页函数setList(arrSplit(result, 1, pageSize));} catch (e) {message.warn(e.message || '获取数据失败');}setLoading(false);}, []);
2. 分页组件函数
const handlePaginationChange = useCallback(pagination => { //获得pageIndexconst list = arrSplit(sumList, pagination, pageSize);setList(list);},[list],);
3. 分页函数
export function arrSplit(arr: any[], index: number, size: number): any[] {const offset = (index - 1) * size;return offset + size >= arr.length ? arr.slice(offset, arr.length) : arr.slice(offset, offset + size);
}
二、lodash实现分页
(1)html代码
<div className={styles['fre-div']}><Row>{current.map((item): JSX.Element => {return (<Col span={4} key={item.id} className={styles['fre-col']}><div className={styles['fre-col__div']}><img className={styles['fre-col__img']} src={item.imageUrl} alt="" /><p className={styles['fre-col__text']}><span>{item.frequency}次</span><a onClick={handleDetail(item.account, item.number, item.name, item.bizCode)}>详情</a></p></div></Col>);},)}</Row>
</div>
<PaginationonChange={handlePaginationChange}defaultCurrent={pageIndex}total={list.length}pageSize={pageSize}className={styles['page-div']}
/>
</div>
(2)js代码
1. 请求函数
const requestList = useCallback(async (params: CompareFreAnalyParams) => {setLoading(true);setList([]);try {const { result } = await fetchCompareFreAnalyList(params);setList(result);} catch (e) {message.warn(e.message || '获取数据失败');}setLoading(false);}, []);
2. 分页组件函数
const handlePaginationChange = useCallback(pagination => {const search = queryString.parse(location.search);history.push({pathname: location.pathname,search: queryString.stringify({...search,pageIndex: pagination,}),});},[location.search, location.pathname, history],);
3. 通过useMemo监听分页
import { chunk } from 'lodash-es';const current = useMemo(() => {return chunk(list, pageSize)[pageIndex - 1] || [];}, [list, pageIndex]);
React之实现前端分页相关推荐
- react 前端分页查询数据导出excel
react 前端分页查询数据导出excel 前言 一.安装file-saver.xlsx插件 二.创建export.ts文件 三.导出方法 前言 需求:前端实现导出Table中所有数据(不止是当前页面 ...
- Jquery前端分页插件pagination同步加载和异步加载
上一篇文章介绍了Jquery前端分页插件pagination的基本使用方法和使用案例,大致原理就是一次性加载所有的数据再分页.https://www.jianshu.com/p/a1b8b1db025 ...
- react前端开发_是的,React正在接管前端开发。 问题是为什么。
react前端开发 by Samer Buna 通过Samer Buna 是的,React正在接管前端开发. 问题是为什么. (Yes, React is taking over front-end ...
- php grid 分页,jqGrid实现前端分页
jqgrid 前端分页 前提: 不能进行后台分页,或者后台添加分页比较麻烦的话, 打算采取前端分页 后台只需要查询全部数据,返回到前端 jqgrid需要后台返回的参数 { page:当前页(默认第一页 ...
- 如何使用React和Redux前端创建Rails项目
by Mark Hopson 马克·霍普森(Mark Hopson) 如何使用React和Redux前端(加上Typescript!)创建Rails项目 (How to create a Rails ...
- 锋利的js前端分页之jQuery
原文:锋利的js前端分页之jQuery 大家在作分页时,多数是在后台返回一个导航条的html字符串,其实在前端用js也很好实现. 调用pager方法,输入参数,会返回一个导航条的html字符串.方法的 ...
- 纯JS前端分页方法(JS分页)
1.JS分页函数:开发过程中,分页功能一般是后台提供接口,前端只要传page(当前页码)和pageSize(每页最大显示条数)及对应的其他查询条件,就可以返回所需分页显示的数据. 但是有时也需要前端本 ...
- 2021 年 Angular vs. React vs. Vue 前端框架对比
2021 年 Angular vs. React vs. Vue 前端框架对比 一个是 UI 库(React),另一个是成熟的前端框架(Angular),而其中最年轻的(Vue)则可以称之为渐进式框架 ...
- 前端分页插件pagination
摘要: 最近在开发项目中又用到了前端分页,以前也做过,为了方便以后使用所以将他封装成第三方插件,不依赖任何库.网上已经有很多插件,问什么还要自己造轮子? 自己写的扩展性高 不依赖任何库 作为一次技术沉 ...
最新文章
- prim算法构建最小生成树
- 微软为无服务器架构引入新API管理消费层
- P2261 [CQOI2007]余数求和 整除分块
- iOS使用shell脚本注入混淆内容
- 降为千元机!小米6X 6+64G版到手价999元
- java发送post请求json格式_Linux QT 4G发送HTTP POST请求发送JSON格式的数据
- 由ORA-28001同一时候带出ORA-28000的解决的方法
- Linux curl命令简介
- 网络机顶盒固件编辑器_电信机顶盒刷固件补丁下载
- protues仿真之数码管消影问题
- 机房短信通(SMS Alert System)
- protel 99se交互式布局
- js 随机生成时间段
- 二元二次不定方程(佩尔方程)
- 吞云吐雾,美国电子烟问题,内附FDA的一个隐情
- 从服务器取文件的命令,ftp 服务器取文件命令
- CubieBoard7开发板(基于S700芯片)基于安卓系统固件编译
- Criteo使用Cassandra存储后端实现Graphite的规模化
- 深度体验特斯拉新Model S:游戏体验翻车,方向盘让人又爱又恨
- 《自拍教程44》Python adb一键截取Logcat日志
热门文章
- Uipath Orchestrator及无人值守机器人配置使用教程
- Windows 子系统 Ubuntu root 密码设置 , wls2 docker, wls 桌面
- 编译C++程序(经验版)
- 将别人的幻灯片插入到自己的PPT中
- 万年历设计单片机c语言,基于单片机的电子万年历设计(含电路图,Proteus仿真程序)...
- java+jsp+servlet+sqlserver美容美发店管理系统
- uni-app禁用返回按钮/返回键
- 计算机毕业设计Java学校图书馆管理系统(源码+系统+mysql数据库+lw文档)
- Android Studio 和 gradle 修改缓存文件夹路径
- 【ASP.NET MVC4】第五课:视图技术、输出辅助方法、Razor视图引擎、Razor语法、分部视图