mirror of
https://github.com/d0zingcat/NotionNext.git
synced 2026-06-02 07:26:45 +00:00
修复伪静态分页bug
This commit is contained in:
@@ -24,6 +24,7 @@ export const BlogListPage = props => {
|
||||
.split('?')[0]
|
||||
.replace(/\/page\/[1-9]\d*/, '')
|
||||
.replace(/\/$/, '')
|
||||
.replace('.html', '')
|
||||
|
||||
const showPageCover = siteConfig('EXAMPLE_POST_LIST_COVER', null, CONFIG)
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@ const PaginationSimple = ({ page, showNext }) => {
|
||||
.split('?')[0]
|
||||
.replace(/\/page\/[1-9]\d*/, '')
|
||||
.replace(/\/$/, '')
|
||||
.replace('.html', '')
|
||||
|
||||
return (
|
||||
<div className='my-10 flex justify-between font-medium text-black dark:text-gray-100 space-x-2'>
|
||||
|
||||
@@ -21,6 +21,7 @@ const PaginationNumber = ({ page, totalPage }) => {
|
||||
.split('?')[0]
|
||||
.replace(/\/page\/[1-9]\d*/, '')
|
||||
.replace(/\/$/, '')
|
||||
.replace('.html', '')
|
||||
const pages = generatePages(pagePrefix, page, currentPage, totalPage)
|
||||
|
||||
const [value, setValue] = useState('')
|
||||
|
||||
@@ -16,6 +16,7 @@ const PaginationNumber = ({ page, totalPage }) => {
|
||||
.split('?')[0]
|
||||
.replace(/\/page\/[1-9]\d*/, '')
|
||||
.replace(/\/$/, '')
|
||||
.replace('.html', '')
|
||||
const pages = generatePages(pagePrefix, page, currentPage, totalPage)
|
||||
|
||||
return (
|
||||
|
||||
@@ -22,6 +22,7 @@ const PaginationNumber = ({ page, totalPage }) => {
|
||||
.split('?')[0]
|
||||
.replace(/\/page\/[1-9]\d*/, '')
|
||||
.replace(/\/$/, '')
|
||||
.replace('.html', '')
|
||||
const pages = generatePages(pagePrefix, page, currentPage, totalPage)
|
||||
if (pages?.length <= 1) {
|
||||
return <></>
|
||||
@@ -46,7 +47,7 @@ const PaginationNumber = ({ page, totalPage }) => {
|
||||
return (
|
||||
<>
|
||||
{/* pc端分页按钮 */}
|
||||
<div className="hidden lg:flex justify-between items-end mt-10 mb-5 font-medium text-black duration-500 dark:text-gray-300 py-3 space-x-2 overflow-x-auto">
|
||||
<div className='hidden lg:flex justify-between items-end mt-10 mb-5 font-medium text-black duration-500 dark:text-gray-300 py-3 space-x-2 overflow-x-auto'>
|
||||
{/* 上一页 */}
|
||||
<Link
|
||||
href={{
|
||||
@@ -56,32 +57,29 @@ const PaginationNumber = ({ page, totalPage }) => {
|
||||
: `${pagePrefix}/page/${currentPage - 1}`,
|
||||
query: router.query.s ? { s: router.query.s } : {}
|
||||
}}
|
||||
rel="prev"
|
||||
className={`${currentPage === 1 ? 'invisible' : 'block'}`}
|
||||
>
|
||||
<div className="relative w-24 h-10 flex items-center transition-all duration-200 justify-center py-2 px-2 bg-white dark:bg-[#1e1e1e] border rounded-lg cursor-pointer group">
|
||||
<i className="fas fa-angle-left mr-2 transition-all duration-200 transform group-hover:-translate-x-4" />
|
||||
<div className="absolute translate-x-4 ml-2 opacity-0 transition-all duration-200 group-hover:opacity-100 group-hover:translate-x-0">
|
||||
rel='prev'
|
||||
className={`${currentPage === 1 ? 'invisible' : 'block'}`}>
|
||||
<div className='relative w-24 h-10 flex items-center transition-all duration-200 justify-center py-2 px-2 bg-white dark:bg-[#1e1e1e] border rounded-lg cursor-pointer group'>
|
||||
<i className='fas fa-angle-left mr-2 transition-all duration-200 transform group-hover:-translate-x-4' />
|
||||
<div className='absolute translate-x-4 ml-2 opacity-0 transition-all duration-200 group-hover:opacity-100 group-hover:translate-x-0'>
|
||||
{locale.PAGINATION.PREV}
|
||||
</div>
|
||||
</div>
|
||||
</Link>
|
||||
|
||||
{/* 分页 */}
|
||||
<div className="flex items-center space-x-2">
|
||||
<div className='flex items-center space-x-2'>
|
||||
{pages}
|
||||
|
||||
{/* 跳转页码 */}
|
||||
<div className="bg-white hover:bg-gray-100 dark:hover:bg-yellow-600 dark:bg-[#1e1e1e] h-10 border flex justify-center items-center rounded-lg group hover:border-indigo-600 transition-all duration-200">
|
||||
<div className='bg-white hover:bg-gray-100 dark:hover:bg-yellow-600 dark:bg-[#1e1e1e] h-10 border flex justify-center items-center rounded-lg group hover:border-indigo-600 transition-all duration-200'>
|
||||
<input
|
||||
value={value}
|
||||
className="w-0 group-hover:w-20 group-hover:px-3 transition-all duration-200 bg-gray-100 border-none outline-none h-full rounded-lg"
|
||||
onInput={handleInputChange}
|
||||
></input>
|
||||
className='w-0 group-hover:w-20 group-hover:px-3 transition-all duration-200 bg-gray-100 border-none outline-none h-full rounded-lg'
|
||||
onInput={handleInputChange}></input>
|
||||
<div
|
||||
onClick={jumpToPage}
|
||||
className="cursor-pointer hover:bg-indigo-600 dark:bg-[#1e1e1e] dark:hover:bg-yellow-600 hover:text-white px-4 py-2 group-hover:px-2 group-hover:mx-1 group-hover:rounded bg-white"
|
||||
>
|
||||
className='cursor-pointer hover:bg-indigo-600 dark:bg-[#1e1e1e] dark:hover:bg-yellow-600 hover:text-white px-4 py-2 group-hover:px-2 group-hover:mx-1 group-hover:rounded bg-white'>
|
||||
<ChevronDoubleRight className={'w-4 h-4'} />
|
||||
</div>
|
||||
</div>
|
||||
@@ -93,12 +91,11 @@ const PaginationNumber = ({ page, totalPage }) => {
|
||||
pathname: `${pagePrefix}/page/${currentPage + 1}`,
|
||||
query: router.query.s ? { s: router.query.s } : {}
|
||||
}}
|
||||
rel="next"
|
||||
className={`${+showNext ? 'block' : 'invisible'} `}
|
||||
>
|
||||
<div className="relative w-24 h-10 flex items-center transition-all duration-200 justify-center py-2 px-2 bg-white dark:bg-[#1e1e1e] border rounded-lg cursor-pointer group">
|
||||
<i className="fas fa-angle-right mr-2 transition-all duration-200 transform group-hover:translate-x-6" />
|
||||
<div className="absolute -translate-x-10 ml-2 opacity-0 transition-all duration-200 group-hover:opacity-100 group-hover:-translate-x-2">
|
||||
rel='next'
|
||||
className={`${+showNext ? 'block' : 'invisible'} `}>
|
||||
<div className='relative w-24 h-10 flex items-center transition-all duration-200 justify-center py-2 px-2 bg-white dark:bg-[#1e1e1e] border rounded-lg cursor-pointer group'>
|
||||
<i className='fas fa-angle-right mr-2 transition-all duration-200 transform group-hover:translate-x-6' />
|
||||
<div className='absolute -translate-x-10 ml-2 opacity-0 transition-all duration-200 group-hover:opacity-100 group-hover:-translate-x-2'>
|
||||
{locale.PAGINATION.NEXT}
|
||||
</div>
|
||||
</div>
|
||||
@@ -107,7 +104,7 @@ const PaginationNumber = ({ page, totalPage }) => {
|
||||
|
||||
{/* 移动端分页 */}
|
||||
|
||||
<div className="lg:hidden w-full flex flex-row">
|
||||
<div className='lg:hidden w-full flex flex-row'>
|
||||
{/* 上一页 */}
|
||||
<Link
|
||||
href={{
|
||||
@@ -117,13 +114,12 @@ const PaginationNumber = ({ page, totalPage }) => {
|
||||
: `${pagePrefix}/page/${currentPage - 1}`,
|
||||
query: router.query.s ? { s: router.query.s } : {}
|
||||
}}
|
||||
rel="prev"
|
||||
className={`${showPrev ? 'block' : 'hidden'} dark:text-white relative w-full flex-1 h-14 flex items-center transition-all duration-200 justify-center py-2 px-2 bg-white dark:bg-[#1e1e1e] border rounded-xl cursor-pointer`}
|
||||
>
|
||||
rel='prev'
|
||||
className={`${showPrev ? 'block' : 'hidden'} dark:text-white relative w-full flex-1 h-14 flex items-center transition-all duration-200 justify-center py-2 px-2 bg-white dark:bg-[#1e1e1e] border rounded-xl cursor-pointer`}>
|
||||
{locale.PAGINATION.PREV}
|
||||
</Link>
|
||||
|
||||
{showPrev && showNext && <div className="w-12"></div>}
|
||||
{showPrev && showNext && <div className='w-12'></div>}
|
||||
|
||||
{/* 下一页 */}
|
||||
<Link
|
||||
@@ -131,9 +127,8 @@ const PaginationNumber = ({ page, totalPage }) => {
|
||||
pathname: `${pagePrefix}/page/${currentPage + 1}`,
|
||||
query: router.query.s ? { s: router.query.s } : {}
|
||||
}}
|
||||
rel="next"
|
||||
className={`${+showNext ? 'block' : 'hidden'} dark:text-white relative w-full flex-1 h-14 flex items-center transition-all duration-200 justify-center py-2 px-2 bg-white dark:bg-[#1e1e1e] border rounded-xl cursor-pointer`}
|
||||
>
|
||||
rel='next'
|
||||
className={`${+showNext ? 'block' : 'hidden'} dark:text-white relative w-full flex-1 h-14 flex items-center transition-all duration-200 justify-center py-2 px-2 bg-white dark:bg-[#1e1e1e] border rounded-xl cursor-pointer`}>
|
||||
{locale.PAGINATION.NEXT}
|
||||
</Link>
|
||||
</div>
|
||||
@@ -163,8 +158,7 @@ function getPageElement(page, currentPage, pagePrefix) {
|
||||
? 'bg-indigo-600 dark:bg-yellow-600 text-white '
|
||||
: 'dark:bg-[#1e1e1e] bg-white') +
|
||||
' hover:border-indigo-600 dark:hover:bg-yellow-600 dark:border-gray-600 px-4 border py-2 rounded-lg drop-shadow-sm duration-200 transition-colors'
|
||||
}
|
||||
>
|
||||
}>
|
||||
{page}
|
||||
</Link>
|
||||
)
|
||||
@@ -197,7 +191,7 @@ function generatePages(pagePrefix, page, currentPage, totalPage) {
|
||||
}
|
||||
if (startPage > 2) {
|
||||
pages.push(
|
||||
<div key={-1} className="-mt-2 mx-1">
|
||||
<div key={-1} className='-mt-2 mx-1'>
|
||||
...{' '}
|
||||
</div>
|
||||
)
|
||||
|
||||
@@ -16,6 +16,8 @@ const PaginationNumber = ({ page, totalPage }) => {
|
||||
.split('?')[0]
|
||||
.replace(/\/page\/[1-9]\d*/, '')
|
||||
.replace(/\/$/, '')
|
||||
.replace('.html', '')
|
||||
|
||||
const pages = generatePages(pagePrefix, page, currentPage, totalPage)
|
||||
|
||||
return (
|
||||
@@ -67,22 +69,14 @@ const PaginationNumber = ({ page, totalPage }) => {
|
||||
)
|
||||
}
|
||||
|
||||
function getPageElement(pagePrefix, page, currentPage) {
|
||||
return (
|
||||
<Link
|
||||
href={page === 1 ? `${pagePrefix}/` : `${pagePrefix}/page/${page}`}
|
||||
key={page}
|
||||
passHref
|
||||
className={
|
||||
(page + '' === currentPage + ''
|
||||
? 'font-bold bg-gray-500 dark:bg-gray-400 text-white '
|
||||
: 'hover:border-t-2 duration-200 transition-all border-white hover:border-gray-400 ') +
|
||||
' border-white dark:hover:border-gray-400 cursor-pointer w-8 h-8 justify-center flex items-center font-light hover:font-bold'
|
||||
}>
|
||||
{page}
|
||||
</Link>
|
||||
)
|
||||
}
|
||||
/**
|
||||
* 生成分页按钮组
|
||||
* @param {*} pagePrefix
|
||||
* @param {*} page
|
||||
* @param {*} currentPage
|
||||
* @param {*} totalPage
|
||||
* @returns
|
||||
*/
|
||||
function generatePages(pagePrefix, page, currentPage, totalPage) {
|
||||
const pages = []
|
||||
const groupCount = 7 // 最多显示页签数
|
||||
@@ -126,4 +120,28 @@ function generatePages(pagePrefix, page, currentPage, totalPage) {
|
||||
}
|
||||
return pages
|
||||
}
|
||||
/**
|
||||
* 生成分页按钮对象
|
||||
* @param {*} pagePrefix
|
||||
* @param {*} page
|
||||
* @param {*} currentPage
|
||||
* @returns
|
||||
*/
|
||||
function getPageElement(pagePrefix, page, currentPage) {
|
||||
return (
|
||||
<Link
|
||||
href={page === 1 ? `${pagePrefix}/` : `${pagePrefix}/page/${page}`}
|
||||
key={page}
|
||||
passHref
|
||||
className={
|
||||
(page + '' === currentPage + ''
|
||||
? 'font-bold bg-gray-500 dark:bg-gray-400 text-white '
|
||||
: 'hover:border-t-2 duration-200 transition-all border-white hover:border-gray-400 ') +
|
||||
' border-white dark:hover:border-gray-400 cursor-pointer w-8 h-8 justify-center flex items-center font-light hover:font-bold'
|
||||
}>
|
||||
{page}
|
||||
</Link>
|
||||
)
|
||||
}
|
||||
|
||||
export default PaginationNumber
|
||||
|
||||
@@ -19,6 +19,7 @@ export const BlogListPage = props => {
|
||||
.split('?')[0]
|
||||
.replace(/\/page\/[1-9]\d*/, '')
|
||||
.replace(/\/$/, '')
|
||||
.replace('.html', '')
|
||||
|
||||
return (
|
||||
<div className='w-full md:pr-12 my-6'>
|
||||
|
||||
@@ -20,6 +20,7 @@ export const BlogListPage = props => {
|
||||
.split('?')[0]
|
||||
.replace(/\/page\/[1-9]\d*/, '')
|
||||
.replace(/\/$/, '')
|
||||
.replace('.html', '')
|
||||
|
||||
const blogPostRefs = useRef([])
|
||||
|
||||
|
||||
@@ -32,6 +32,7 @@ export default function BlogListPage(props) {
|
||||
.split('?')[0]
|
||||
.replace(/\/page\/[1-9]\d*/, '')
|
||||
.replace(/\/$/, '')
|
||||
.replace('.html', '')
|
||||
|
||||
return (
|
||||
<div className='w-full md:pr-8 mb-12'>
|
||||
|
||||
Reference in New Issue
Block a user