跳转到内容

createPagination 介绍

createPagination 用于创建分页请求实例,基于 createRequest,支持其全部功能。

基本用法

typescript
import { createPagination } from 'vue-rex'

// 假设后端返回 { code: 0, data: { list: User[], total: number } }
const usePage = createPagination({
  listKey: 'data.list',
  totalKey: 'data.total',
})

interface User { id: number; name: string }

const getUsers = (params: { page: number; pageSize: number }) =>
  server.get<{ data: { list: User[]; total: number } }>('/api/users', { params })

const { list, total, page, pageSize, totalPage, isLastPage, reset } = usePage(getUsers)

修改 pagepageSize 自动触发请求;调用 reset() 回到第一页。

配置

配置项类型说明
listKeystring列表字段路径,支持点号 data.records
totalKeystring总条数字段路径,支持点号
paginationSerializer(page, pageSize) => object将 page/pageSize 映射为后端参数名,如 { current: page, size: pageSize }
optionsobject全局默认配置,被调用时局部 options 覆盖

Options

usePage(service, options) 支持 createRequest 全部 Options,外加:

选项类型默认值说明
initialPagenumber1初始页码
initialPageSizenumber10初始每页条数
pageWatchbooleantruepage 变化时是否自动请求
resetPageWhenPageSizeChangebooleantruepageSize 变化时是否重置到第一页
formatList(list, rawData, params) => TFormatData[]-对列表项做二次处理

返回值

createRequest 返回值 基础上,额外提供:

属性类型说明
listComputedRef<TFormatData[]>当前页数据列表
totalComputedRef<number>数据总条数
pageRef<number>当前页码(可写)
pageSizeRef<number>每页条数(可写)
totalPageComputedRef<number>总页数
isLastPageComputedRef<boolean>是否最后一页
reset() => void重置到第一页