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 网络架构
react对antd中Select组件二次封装
本文介绍了如何在React中对Ant Design(antd)的Select组件进行二次封装,包括创建MSelect组件、定义默认属性、渲染Select组件,并展示了如何使用Less进行样式定义和如何在项目中使用封装后的Select组件。
135 2
react对antd中Select组件二次封装
|
2月前
|
JavaScript
vue封装一个查询URL参数方法
通过以上步骤,我们在Vue.js项目中封装了一个查询URL参数的方法 `getQueryParam`,并在Vue组件中成功应用。这种封装方式不仅提高了代码的复用性,还使得代码更加清晰和易于维护。
22 1
|
4月前
封装react-antd-table组件参数以及方法如rowSelection、pageNum、pageSize、分页方法等等
文章介绍了如何封装React-Antd的Table组件,包括参数和方法,如行选择(rowSelection)、页码(pageNum)、页面大小(pageSize)、分页方法等,以简化在不同表格组件中的重复代码。
84 0
|
8月前
|
资源调度 JavaScript 前端开发
将Elementui里的Table表格做成响应式并且和Pagination分页组件封装在一起(Vue实战系列)
将Elementui里的Table表格做成响应式并且和Pagination分页组件封装在一起(Vue实战系列)
392 2
|
8月前
|
前端开发 JavaScript
vue实现通用分页控件,支持前端分页、后端分页。
vue实现通用分页控件,支持前端分页、后端分页。
104 1
|
JavaScript
vue表格分页以及增删改查的实际应用
vue表格分页以及增删改查的实际应用
90 0
|
JavaScript
VUE简单封装分页器组件
VUE简单封装分页器组件
84 0
|
存储 JavaScript 前端开发
Vue 3和Element组件库的分页功能实现
随着Web应用程序的发展,数据量的增加和复杂性的提高,分页功能成为了用户友好和高效展示数据的重要手段。Vue 3是由Evan You于2020年推出的JavaScript框架,具有响应式和组件化开发的特点。Element是一套基于Vue.js的UI组件库,提供了大量易于使用和高度定制化的组件。本论文将介绍如何利用Vue 3和Element组件库实现优秀的分页功能,提升用户体验。
1045 3
|
前端开发
Concis组件库封装——Pagination分页器
Concis组件库封装——Pagination分页器组件封装
116 1
Concis组件库封装——Pagination分页器
|
JavaScript 测试技术 开发者
vue封装通用组件方法思路
vue封装通用组件方法思路
394 0