data-paginate
Version:
`data-paginate` is a React hook for handling pagination with an array of data. It provides an easy way to paginate data with simple navigation functions.
34 lines (31 loc) • 958 B
JavaScript
import { useState, useMemo } from 'react';
function usePagination(data, limit, initialPage = 1) {
const [page, setPage] = useState(initialPage);
const totalPages = useMemo(() => {
return Math.ceil(data.length / limit);
}, [data.length, limit]);
const paginatedData = useMemo(() => {
const start = (page - 1) * limit;
const end = start + limit;
return data.slice(start, end);
}, [data, page, limit]);
const nextPage = () => {
setPage((prevPage) => Math.min(prevPage + 1, totalPages));
};
const prevPage = () => {
setPage((prevPage) => Math.max(prevPage - 1, 1));
};
const goToPage = (pageNumber) => {
const page = Math.max(1, Math.min(pageNumber, totalPages));
setPage(page);
};
return {
paginatedData,
page,
totalPages,
nextPage,
prevPage,
goToPage,
};
}
export { usePagination as default };