import { useState, useMemo,useEffect } from "react"; const usePagination = (data, itemsPerPage) => { const [currentPage, setCurrentPage] = useState(1); // const totalPages = Math.ceil(data?.length / itemsPerPage); // add this new line const totalPages = useMemo(() => { return Math.ceil((data?.length || 0) / itemsPerPage); }, [data?.length, itemsPerPage]); useEffect(() => { if (currentPage > totalPages && totalPages > 0) { setCurrentPage(1); } else if (!data || data.length === 0) { setCurrentPage(1); } else if (currentPage === 0 && totalPages > 0) { setCurrentPage(1); } }, [data, totalPages, currentPage]); const currentItems = useMemo(() => { const startIndex = (currentPage - 1) * itemsPerPage; // return data?.slice(startIndex, startIndex + 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;