antd-protable的分页逻辑封装

简介: antd-protable的分页逻辑封装

一、前言

这次的分页基于pro-table进行封装。

前端分页看似是个小功能,但里面隐藏的逻辑还是非常多的,比如我们业务中需要的分页器除了能进行正常的页码切换等操作外,还需要如下的功能:

  1. 次页删除最后一条数据需要跳转至第一页;
  2. 次页新建数据需要跳转到第一页,修改数据要保留本页;
  3. 切换单页数量大小后需要设为后续的默认分页大小;

这四个功能点都不难,但是基本所有的表格列表都需要这四个功能,所以我们需要封装一个公共的table避免写重复性的代码。

二、分页器封装

首先创建一个分页器:

const [handlePagination, setHandlePagination] = useState<object>({
    current: 1,
    pageSize: defaultPageSize,
    showSizeChanger: true,
    onShowSizeChange: (current: number, size: number) => {
      localStorage.setItem('defaultPageSize', size.toString());
      setHandlePagination({ ...handlePagination, ...{ pageSize: size, current: current } });
    },
  });

1)次页删除最后一条数据需要跳转至第一页

封装删除方法,在删除的数据不是第一页且是最后一条数据时则修改current为1,代表跳转至第一页:

const deleteDataFunc = async (func: any, record_id: any) => {
    await func(record_id, DELETE).then((_: any) => {
      const currentPage = ref.current?.pageInfo.current || 1;
      if (currentPage > 1 && dataLength <= 1) {
        //在非首页的最后一条数据被删除时,改变页码为前一页进行请求
        setHandlePagination({ ...handlePagination, ...{ current: currentPage - 1 || 1 } });
      }
      ref.current.reload();
    });
  };

2)次页新建数据需要跳转到第一页,修改数据要保留本页

跳转第一页刷新还是保留本页刷新的方法在pro-table中是已经提供了的,方法如下:

ref.current.reloadAndRest() //跳转第一页刷新
ref.current.reload() //保留本页刷新

所以我们只需要封装一个方法来判断是创建数据还是修改数据即可,因为我们的接口特殊性(POST请求代表创建,PATCH请求代表修改)所以可以下面这样写:

onRefresh: (formType: string) => (formType === POST ? ref.current.reloadAndRest() : ref.current.reload()),

3)切换单页数量大小后需要设为后续的默认分页大小

这个实现就很简单了,直接在每次onShowSizeChange通过localStorage设置即可,后面再通过getItem的方法设置默认分页大小即可:

localStorage.setItem('defaultPageSize', size.toString());
目录
相关文章
|
4天前
|
资源调度 JavaScript 前端开发
将Elementui里的Table表格做成响应式并且和Pagination分页组件封装在一起(Vue实战系列)
将Elementui里的Table表格做成响应式并且和Pagination分页组件封装在一起(Vue实战系列)
|
5天前
|
前端开发 JavaScript
vue实现通用分页控件,支持前端分页、后端分页。
vue实现通用分页控件,支持前端分页、后端分页。
40 1
|
5天前
|
存储 JavaScript
js如何实现分页功能
js如何实现分页功能
13 0
|
6月前
|
JavaScript
VUE简单封装分页器组件
VUE简单封装分页器组件
55 0
|
7月前
75 # koa 基本逻辑实现以及属性的扩展
75 # koa 基本逻辑实现以及属性的扩展
12 0
|
9月前
|
JavaScript 测试技术 开发者
vue封装通用组件方法思路
vue封装通用组件方法思路
260 0
|
9月前
|
存储 JavaScript 前端开发
Vue 3和Element组件库的分页功能实现
随着Web应用程序的发展,数据量的增加和复杂性的提高,分页功能成为了用户友好和高效展示数据的重要手段。Vue 3是由Evan You于2020年推出的JavaScript框架,具有响应式和组件化开发的特点。Element是一套基于Vue.js的UI组件库,提供了大量易于使用和高度定制化的组件。本论文将介绍如何利用Vue 3和Element组件库实现优秀的分页功能,提升用户体验。
612 3
|
10月前
Vue3手写分页在分页的基础上用到Pagination 分页组件
Vue3手写分页在分页的基础上用到Pagination 分页组件
61 0
|
10月前
Vue3自定义组件遇到分页传输数据不正确解决办法
Vue3自定义组件遇到分页传输数据不正确解决办法
66 0
|
11月前
|
前端开发
前端teble分页组件开发(手写组件)
这段时间,在开发过程中接到一个需求,当时接到这个需求的时候,本来想着是找一找ui组件啥的来,但是后面找了一圈后,没有找到符合的,没办法,只能自己花点时间写一下了
117 0