UNPKG

react-native-ultimate-paginator

Version:

A comprehensive pagination library supporting various pagination scenarios including server-side, client-side, infinite scroll, and load-more functionality

36 lines (31 loc) 1.06 kB
import { useState, useEffect, useCallback } from 'react'; import { PaginationOptions, PaginationResult } from '../types'; import { calculatePagination } from '../utils/pagination'; export function usePagination(options: PaginationOptions): PaginationResult & { setPage: (page: number) => void; setPageSize: (size: number) => void; } { const [currentPage, setCurrentPage] = useState(options.currentPage); const [pageSize, setPageSize] = useState(options.pageSize); const paginationResult = calculatePagination({ ...options, currentPage, pageSize, }); const setPage = useCallback((page: number) => { const totalPages = Math.ceil(options.totalItems / pageSize); if (page >= 1 && page <= totalPages) { setCurrentPage(page); } }, [options.totalItems, pageSize]); useEffect(() => { if (currentPage > Math.ceil(options.totalItems / pageSize)) { setCurrentPage(1); } }, [options.totalItems, pageSize, currentPage]); return { ...paginationResult, setPage, setPageSize, }; }