跳转到内容

createPagination

createPagination creates paginated request instances, built on top of createRequest with full feature support.

Basic Usage

typescript
import { createPagination } from 'vue-rex'

// Backend returns { 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)

Change page or pageSize to auto-trigger a request; call reset() to return to page 1.

Configuration

ConfigTypeDescription
listKeystringList field path, supports dot notation data.records
totalKeystringTotal count field path, supports dot notation
paginationSerializer(page, pageSize) => objectMap page/pageSize to backend param names, e.g. { current: page, size: pageSize }
optionsobjectGlobal defaults, overridden by local options

Options

usePage(service, options) supports all createRequest Options, plus:

OptionTypeDefaultDescription
initialPagenumber1Initial page number
initialPageSizenumber10Initial page size
pageWatchbooleantrueAuto-request on page change
resetPageWhenPageSizeChangebooleantrueReset to page 1 when pageSize changes
formatList(list, rawData, params) => TFormatData[]-Transform list items

Return Value

Extends createRequest return value with:

PropertyTypeDescription
listComputedRef<TFormatData[]>Current page data
totalComputedRef<number>Total record count
pageRef<number>Current page (writable)
pageSizeRef<number>Page size (writable)
totalPageComputedRef<number>Total pages
isLastPageComputedRef<boolean>Whether last page
reset() => voidReset to first page