Loading source
Pulling the file list, source metadata, and syntax-aware rendering for this listing.
Source from repo
Apply VueUse composables in Vue 3/Nuxt projects to replace custom implementations with battle-tested utilities.
Files
Skill
Size
Entrypoint
Format
Open file
Syntax-highlighted preview of this file as included in the skill package.
references/useOffsetPagination.md
1---2category: Utilities3---45# useOffsetPagination67Reactive offset pagination.89## Usage1011```ts12import { useOffsetPagination } from '@vueuse/core'1314function fetchData({ currentPage, currentPageSize }: { currentPage: number, currentPageSize: number }) {15fetch(currentPage, currentPageSize).then((responseData) => {16data.value = responseData17})18}1920const {21currentPage,22currentPageSize,23pageCount,24isFirstPage,25isLastPage,26prev,27next,28} = useOffsetPagination({29total: database.value.length,30page: 1,31pageSize: 10,32onPageChange: fetchData,33onPageSizeChange: fetchData,34})35```3637## Component Usage3839```vue40<template>41<UseOffsetPagination42v-slot="{43currentPage,44currentPageSize,45next,46prev,47pageCount,48isFirstPage,49isLastPage,50}"51:total="database.length"52@page-change="fetchData"53@page-size-change="fetchData"54>55<div class="gap-x-4 gap-y-2 grid-cols-2 inline-grid items-center">56<div opacity="50">57total:58</div>59<div>{{ database.length }}</div>60<div opacity="50">61pageCount:62</div>63<div>{{ pageCount }}</div>64<div opacity="50">65currentPageSize:66</div>67<div>{{ currentPageSize }}</div>68<div opacity="50">69currentPage:70</div>71<div>{{ currentPage }}</div>72<div opacity="50">73isFirstPage:74</div>75<div>{{ isFirstPage }}</div>76<div opacity="50">77isLastPage:78</div>79<div>{{ isLastPage }}</div>80</div>81<div>82<button :disabled="isFirstPage" @click="prev">83prev84</button>85<button :disabled="isLastPage" @click="next">86next87</button>88</div>89</UseOffsetPagination>90</template>91```9293Component event supported props event callback and event listener.9495event listener:9697```vue98<template>99<UseOffsetPagination100v-slot="{101currentPage,102currentPageSize,103next,104prev,105pageCount,106isFirstPage,107isLastPage,108}"109:total="database.length"110@page-change="fetchData"111@page-size-change="fetchData"112@page-count-change="onPageCountChange"113>114<!-- your code -->115</UseOffsetPagination>116</template>117```118119or props event callback:120121```vue122<template>123<UseOffsetPagination124v-slot="{125currentPage,126currentPageSize,127next,128prev,129pageCount,130isFirstPage,131isLastPage,132}"133:total="database.length"134:on-page-change="fetchData"135:on-page-size-change="fetchData"136:on-page-count-change="onPageCountChange"137>138<!-- your code -->139</UseOffsetPagination>140</template>141```142143## Type Declarations144145```ts146export interface UseOffsetPaginationOptions {147/**148* Total number of items.149*/150total?: MaybeRefOrGetter<number>151/**152* The number of items to display per page.153* @default 10154*/155pageSize?: MaybeRefOrGetter<number>156/**157* The current page number.158* @default 1159*/160page?: MaybeRef<number>161/**162* Callback when the `page` change.163*/164onPageChange?: (165returnValue: UnwrapNestedRefs<UseOffsetPaginationReturn>,166) => unknown167/**168* Callback when the `pageSize` change.169*/170onPageSizeChange?: (171returnValue: UnwrapNestedRefs<UseOffsetPaginationReturn>,172) => unknown173/**174* Callback when the `pageCount` change.175*/176onPageCountChange?: (177returnValue: UnwrapNestedRefs<UseOffsetPaginationReturn>,178) => unknown179}180export interface UseOffsetPaginationReturn {181currentPage: Ref<number>182currentPageSize: Ref<number>183pageCount: ComputedRef<number>184isFirstPage: ComputedRef<boolean>185isLastPage: ComputedRef<boolean>186prev: () => void187next: () => void188}189export type UseOffsetPaginationInfinityPageReturn = Omit<190UseOffsetPaginationReturn,191"isLastPage"192>193export declare function useOffsetPagination(194options: Omit<UseOffsetPaginationOptions, "total">,195): UseOffsetPaginationInfinityPageReturn196export declare function useOffsetPagination(197options: UseOffsetPaginationOptions,198): UseOffsetPaginationReturn199```200