Skip to content

useOffsetPagination

反应式偏移分页。

¥Reactive offset pagination.

示例

total:
80
pageCount:
8
currentPageSize:
10
currentPage:
1
isFirstPage:
true
isLastPage:
false
idname

用法

¥Usage

ts
import { 
useOffsetPagination
} from '@vueuse/core'
function
fetchData
({
currentPage
,
currentPageSize
}: {
currentPage
: number,
currentPageSize
: number }) {
fetch
(
currentPage
,
currentPageSize
).
then
((
responseData
) => {
data.value =
responseData
}) } const {
currentPage
,
currentPageSize
,
pageCount
,
isFirstPage
,
isLastPage
,
prev
,
next
,
} =
useOffsetPagination
({
total
: database.value.length,
page
: 1,
pageSize
: 10,
onPageChange
:
fetchData
,
onPageSizeChange
:
fetchData
,
})
js
import { useOffsetPagination } from '@vueuse/core'
function fetchData({ currentPage, currentPageSize }) {
  fetch(currentPage, currentPageSize).then((responseData) => {
    data.value = responseData
  })
}
const {
  currentPage,
  currentPageSize,
  pageCount,
  isFirstPage,
  isLastPage,
  prev,
  next,
} = useOffsetPagination({
  total: database.value.length,
  page: 1,
  pageSize: 10,
  onPageChange: fetchData,
  onPageSizeChange: fetchData,
})

组件用法

¥Component Usage

vue
<template>
  <UseOffsetPagination
    v-slot="{
      
currentPage
,
currentPageSize
,
next
,
prev
,
pageCount
,
isFirstPage
,
isLastPage
,
}"
:total
="database.length"
@
page-change
="fetchData"
@
page-size-change
="fetchData"
> <
div
class
="gap-x-4 gap-y-2 grid-cols-2 inline-grid items-center">
<
div
opacity
="50">
total: </
div
>
<
div
>{{ database.length }}</
div
>
<
div
opacity
="50">
pageCount: </
div
>
<
div
>{{
pageCount
}}</
div
>
<
div
opacity
="50">
currentPageSize: </
div
>
<
div
>{{
currentPageSize
}}</
div
>
<
div
opacity
="50">
currentPage: </
div
>
<
div
>{{
currentPage
}}</
div
>
<
div
opacity
="50">
isFirstPage: </
div
>
<
div
>{{
isFirstPage
}}</
div
>
<
div
opacity
="50">
isLastPage: </
div
>
<
div
>{{
isLastPage
}}</
div
>
</
div
>
<
div
>
<
button
:disabled
="
isFirstPage
" @
click
="
prev
">
prev </
button
>
<
button
:disabled
="
isLastPage
" @
click
="
next
">
next </
button
>
</
div
>
</UseOffsetPagination> </template>

组件事件支持 props 事件回调和事件监听。

¥Component event supported props event callback and event listener.

事件监听器:

¥event listener:

vue
<template>
  <UseOffsetPagination
    v-slot="{
      
currentPage
,
currentPageSize
,
next
,
prev
,
pageCount
,
isFirstPage
,
isLastPage
,
}"
:total
="database.length"
@
page-change
="fetchData"
@
page-size-change
="fetchData"
@
page-count-change
="onPageCountChange"
> <!-- your code --> </UseOffsetPagination> </template>

或 props 事件回调:

¥or props event callback:

vue
<template>
  <UseOffsetPagination
    v-slot="{
      
currentPage
,
currentPageSize
,
next
,
prev
,
pageCount
,
isFirstPage
,
isLastPage
,
}"
:total
="database.length"
:on-page-change
="fetchData"
:on-page-size-change
="fetchData"
:on-page-count-change
="onPageCountChange"
> <!-- your code --> </UseOffsetPagination> </template>