Ant Design Vue 之分页 a-pagination使用

分页效果

我们在使用分页使,直接用表格(<a-table>)的自定义:pagination属性最方便;如下图所示:

基于VUE,我们必须在data中定义paginationOpt对象,代码片段如下:

// 分页
      paginationOpt: {
        defaultCurrent: 1, // 默认当前页数
        defaultPageSize: 5, // 默认当前页显示数据的大小
        total: 0, // 总数,必须先有
        showSizeChanger: true,
        showQuickJumper: true,
        pageSizeOptions: ["5", "10", "15", "20"],
        showTotal: (total) => `共 ${total} 条`, // 显示总数
        onShowSizeChange: (current, pageSize) => {
          this.paginationOpt.defaultCurrent = 1;
          this.paginationOpt.defaultPageSize = pageSize;
          this.searchCameraFrom(); //显示列表的接口名称
        },
        // 改变每页数量时更新显示
        onChange: (current, size) => {
          this.paginationOpt.defaultCurrent = current;
          this.paginationOpt.defaultPageSize = size;
          this.searchCameraFrom();
        },
      },

调用接口时,一定要更新total值!!!!!并在发送请求前结构当前页和pagesize的值,否则一直时默认值1和5(我这边初始时1和5,可自己更改)

    // 摄像机查询
    searchCameraFrom() {
      console.log(this.cameraParams);
      const { defaultCurrent, defaultPageSize } = this.paginationOpt;

      this.$api.Camera.getCameraList({
        currPage: defaultCurrent,
        pageSize: defaultPageSize,
        info: this.cameraParams,
      })
        .then((res) => {
          if (res.code != "200") {
            return Promise.reject;
          }
          console.log(res);
          this.cameraList = res.data;
          this.paginationOpt.total = res.total;
        })
        .catch(() => {});
    },

### Ant Design Vue Table 组件分页功能实现 在 Ant Design Vue 中,`a-table` 组件支持通过配置 `pagination` 属性来启用分页功能。为了确保分页能够正常工作并携带搜索条件,可以按照以下方式设置: #### 配置分页属性 首先,在定义表格时需指定 `pagination` 对象及其参数,这些参数控制着分页的行为和外观[^1]。 ```javascript const pagination = { current: 1, pageSize: 10, total: data.length, showSizeChanger: true, onShowSizeChange(current, pageSize) { fetchData({ page: current, size: pageSize }); }, onChange(page, pageSize) { fetchData({ page, size: pageSize }); } }; ``` 上述代码片段展示了如何自定义分页器的显示项数量切换(`showSizeChanger`)以及页面变化事件监听(`onChange`)。每当用户改变每页条目数或跳转到其他页码时都会触发相应的回调函数去重新获取数据。 #### 数据请求逻辑 接着,编写用于发起 API 请求的方法 `fetchData()` ,该方法接受两个参数:当前页码 (`page`) 和每页大小 (`size`) 。此方法负责向服务器发送带有分页信息和其他筛选条件(如果有)的数据请求,并更新本地状态中的 `dataSource` 字段以反映最新加载的结果集。 ```javascript async function fetchData(params) { try { const response = await axios.get('/api/data', { params }); setDataSource(response.data.items); updateTotalCount(response.data.total); } catch (error) { handleError(error); } } ``` 这里假设使用 Axios 库来进行 HTTP 调用;实际应用中可根据具体情况调整网络层工具的选择。另外需要注意的是,当首次渲染组件时也应调用一次 `fetchData()` 方法初始化表格内容。 #### 处理行选择与分页交互 对于存在多选需求的情况,即启用了 `rowSelection` 功能,则要特别留意其可能引发的问题——比如翻页后已选项丢失等现象。为此可以在每次发生分页变动之前保存当前选定记录的状态至 Vuex Store 或者 Local Storage 等持久化存储介质内,待新一页加载完毕后再恢复先前的选择状态[^2]。 ```html <a-table :row-selection="{ selectedRowKeys: selectedRowKeys, onChange: handleSelectChange }" :columns="columns" rowKey="id" :pagination="pagination" :data-source="dataSource"> </a-table> ``` ```javascript function handleSelectChange(selectedRowKeys, selectedRows) { setSelectedRowKeys(selectedRowKeys); // 更新内部 state saveSelectedStateToStorage(selectedRows); // 将所选项存入 localStorage/sessionStorage/Vuex store... } // ... 在适当位置读取并还原上一状态下被勾选过的行 ... restorePreviousSelection(); ``` 以上就是基于 Ant Design Vue 实现带分页及搜索过滤特性的表格控件的主要思路和技术要点概述。
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值