---
category: Utilities
---
# useOffsetPagination
Reactive offset pagination.
## 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,
})
```
## Component Usage
```vue
total:
{{ database.length }}
pageCount:
{{ pageCount }}
currentPageSize:
{{ currentPageSize }}
currentPage:
{{ currentPage }}
isFirstPage:
{{ isFirstPage }}
isLastPage:
{{ isLastPage }}
```
Component event supported props event callback and event listener.
event listener:
```vue
```
or props event callback:
```vue
```
## Type Declarations
```ts
export interface UseOffsetPaginationOptions {
/**
* Total number of items.
*/
total?: MaybeRefOrGetter
/**
* The number of items to display per page.
* @default 10
*/
pageSize?: MaybeRefOrGetter
/**
* The current page number.
* @default 1
*/
page?: MaybeRef
/**
* Callback when the `page` change.
*/
onPageChange?: (
returnValue: UnwrapNestedRefs,
) => unknown
/**
* Callback when the `pageSize` change.
*/
onPageSizeChange?: (
returnValue: UnwrapNestedRefs,
) => unknown
/**
* Callback when the `pageCount` change.
*/
onPageCountChange?: (
returnValue: UnwrapNestedRefs,
) => unknown
}
export interface UseOffsetPaginationReturn {
currentPage: Ref
currentPageSize: Ref
pageCount: ComputedRef
isFirstPage: ComputedRef
isLastPage: ComputedRef
prev: () => void
next: () => void
}
export type UseOffsetPaginationInfinityPageReturn = Omit<
UseOffsetPaginationReturn,
"isLastPage"
>
export declare function useOffsetPagination(
options: Omit,
): UseOffsetPaginationInfinityPageReturn
export declare function useOffsetPagination(
options: UseOffsetPaginationOptions,
): UseOffsetPaginationReturn
```