Vue + Ant Design Vue 的分页pagination

 table 的分页属性pagination

                 

如上图,是用Ant Design创建表格时的分页,下面是我在做项目结合后台给的接口写的代码:

      <a-table
        :pagination="paginationOpt"
        :columns="columns"
        :dataSource="data"
        bordered 
        :rowKey="record => record.id"
        size="small"
      >
      </a-table>

pagination 是分页器属性,paginationOpt是他的值,在data中设置他的值

点击查看分页的api https://www.antdv.com/components/pagination-cn/#api

export default {
  data () {
    return {
     paginationOpt: {
        defaultCurrent: 1,  // 默认当前页数
        defaultPageSize: 10,   // 默认当前页显示数据的大小
        total: 0, // 总数,必须先有
        showSizeChanger: true,
        showQuickJumper: true,
        pageSizeOptions: ['10', '20', '30', '40'],
        showTotal: total => `共 ${total} 条`, // 显示总数
        onShowSizeChange: (current, pageSize) => {
          this.paginationOpt.defaultCurrent = 1
          this.paginationOpt.defaultPageSize = pageSize
          this.getList()  //显示列表的接口名称
        }, 
       // 改变每页数量时更新显示
        onChange: (current, size) => {
          this.paginationOpt.defaultCurrent = current
          this.paginationOpt.defaultPageSize = size
          this.getList()
        } // 点击页码事件
      }
    }
  },
  methods: {
    // 查询列表
    getList () {
      const list = { ...this.order }
      const { defaultCurrent, defaultPageSize } = this.paginationOpt
      list.page = JSON.stringify({
        size: defaultPageSize,
        current: defaultCurrent
      })
     // orderList是后台的接口
      orderList(list).then(res => {
        const { total = 0, records = [] } = res.result.datas
        this.paginationOpt.total = total
        this.data = records  //data 是table的dataSource值
      })
    }
  }
}

 

### 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 实现带分页及搜索过滤特性的表格控件的主要思路和技术要点概述。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值