import BLOG from '@/blog.config' import Link from 'next/link' import { useRouter } from 'next/router' import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' import { faAngleLeft, faAngleRight } from '@fortawesome/free-solid-svg-icons' /** * 数字翻页插件 * @param page 当前页码 * @param showNext 是否有下一页 * @returns {JSX.Element} * @constructor */ const PaginationNumber = ({ page, showNext, totalPage }) => { const router = useRouter() const currentPage = +page const pages = generatePages(page, currentPage, totalPage) return (
{/* 上一页 */} {pages} {/* 下一页 */}
) } function getPageElement (page, currentPage) { return {page} } function generatePages (page, currentPage, totalPage) { const pages = [] const startPage = 1 // 分组开始页码 const groupCount = 5 // 页码分组 if (totalPage <= 10) { for (let i = 1; i <= totalPage; i++) { pages.push(getPageElement(i, page)) } } else { pages.push(getPageElement(1, page)) let pageLength = 0 if (groupCount + startPage > totalPage) { pageLength = totalPage } else { pageLength = groupCount + startPage } if (currentPage >= groupCount) { pages.push(
...
) } for (let i = startPage; i < pageLength; i++) { if (i <= totalPage - 1 && i > 1) { pages.push(getPageElement(i, page)) } } if (totalPage - startPage >= groupCount + 1) { pages.push(
...
) } pages.push(getPageElement(totalPage, page)) } return pages } export default PaginationNumber