21 lines
653 B
JavaScript
21 lines
653 B
JavaScript
import { useState, useMemo } from "react";
|
|
|
|
const usePagination = (data, itemsPerPage) => {
|
|
const [currentPage, setCurrentPage] = useState(1);
|
|
const totalPages = Math.ceil(data?.length / itemsPerPage);
|
|
|
|
const currentItems = useMemo(() => {
|
|
const startIndex = (currentPage - 1) * itemsPerPage;
|
|
return data?.slice(startIndex, startIndex + itemsPerPage);
|
|
}, [data, currentPage, itemsPerPage]);
|
|
|
|
const paginate = (pageNumber) => {
|
|
if (pageNumber < 1 || pageNumber > totalPages) return;
|
|
setCurrentPage(pageNumber);
|
|
};
|
|
|
|
return { currentPage, totalPages, currentItems, paginate,setCurrentPage };
|
|
};
|
|
|
|
export default usePagination;
|