diff --git a/components/NotionPage.js b/components/NotionPage.js index 03b1f1eb..5f2e6967 100644 --- a/components/NotionPage.js +++ b/components/NotionPage.js @@ -1,12 +1,3 @@ - -import 'prismjs' -import 'prismjs/components/prism-bash' -import 'prismjs/components/prism-javascript' -import 'prismjs/components/prism-markup' -import 'prismjs/components/prism-python' -import 'prismjs/components/prism-typescript' -import 'prismjs/components/prism-java' - import { NotionRenderer } from 'react-notion-x' import mediumZoom from 'medium-zoom' import { useEffect, useRef } from 'react' @@ -14,27 +5,22 @@ import dynamic from 'next/dynamic' import { useRouter } from 'next/router' const Code = dynamic(() => - import('react-notion-x/build/third-party/code').then((m) => m.Code) + import('react-notion-x/build/third-party/code').then((m) => m.Code), { ssr: false } ) const Collection = dynamic(() => - import('react-notion-x/build/third-party/collection').then( - (m) => m.Collection - ) + import('react-notion-x/build/third-party/collection').then((m) => m.Collection), { ssr: false } ) + const Equation = dynamic(() => - import('react-notion-x/build/third-party/equation').then((m) => m.Equation) + import('react-notion-x/build/third-party/equation').then((m) => m.Equation), { ssr: false } ) + const Pdf = dynamic( - () => import('react-notion-x/build/third-party/pdf').then((m) => m.Pdf), - { - ssr: false - } + () => import('react-notion-x/build/third-party/pdf').then((m) => m.Pdf), { ssr: false } ) + const Modal = dynamic( - () => import('react-notion-x/build/third-party/modal').then((m) => m.Modal), - { - ssr: false - } + () => import('react-notion-x/build/third-party/modal').then((m) => m.Modal), { ssr: false } ) const NotionPage = ({ post }) => { if (!post || !post.blockMap) { diff --git a/styles/globals.css b/styles/globals.css index dd5d8d73..04cd6aad 100644 --- a/styles/globals.css +++ b/styles/globals.css @@ -113,6 +113,7 @@ nav { .scroll-hidden{ -ms-overflow-style: none; overflow: -moz-scrollbars-none; + scrollbar-width: none; /* firefox */ } .scroll-hidden::-webkit-scrollbar { width: 0 !important } diff --git a/themes/fukasawa/LayoutSlug.js b/themes/fukasawa/LayoutSlug.js index 08c128b4..30265a6c 100644 --- a/themes/fukasawa/LayoutSlug.js +++ b/themes/fukasawa/LayoutSlug.js @@ -1,10 +1,4 @@ import { getPageTableOfContents } from 'notion-utils' -import 'prismjs' -import 'prismjs/components/prism-bash' -import 'prismjs/components/prism-javascript' -import 'prismjs/components/prism-markup' -import 'prismjs/components/prism-python' -import 'prismjs/components/prism-typescript' import ArticleDetail from './components/ArticleDetail' import LayoutBase from './LayoutBase' import { ArticleLock } from './components/ArticleLock' @@ -18,8 +12,8 @@ export const LayoutSlug = (props) => { return ( - {!lock && } - {lock && } - + {!lock && } + {lock && } + ) } diff --git a/themes/hexo/Layout404.js b/themes/hexo/Layout404.js index 6140c8fb..2bc61804 100644 --- a/themes/hexo/Layout404.js +++ b/themes/hexo/Layout404.js @@ -1,6 +1,22 @@ import LayoutBase from './LayoutBase' +import { useRouter } from 'next/router' +import { useEffect } from 'react' export const Layout404 = props => { + const router = useRouter() + useEffect(() => { + // 延时3秒如果加载失败就返回首页 + setTimeout(() => { + if (window) { + const article = document.getElementById('container') + if (!article) { + router.push('/').then(() => { + console.log('找不到页面', router.asPath) + }) + } + } + }, 3000) + }) return (
diff --git a/themes/next/Layout404.js b/themes/next/Layout404.js index 64341ec1..ee743351 100644 --- a/themes/next/Layout404.js +++ b/themes/next/Layout404.js @@ -16,13 +16,13 @@ export const Layout404 = props => { } } }, 3000) - }) + }, []) return
-

404

+

404

页面无法加载,即将返回首页

diff --git a/themes/next/LayoutSearch.js b/themes/next/LayoutSearch.js index 0a1c5fcc..5423f60e 100644 --- a/themes/next/LayoutSearch.js +++ b/themes/next/LayoutSearch.js @@ -2,21 +2,17 @@ import LayoutBase from './LayoutBase' import StickyBar from './components/StickyBar' import BlogPostListScroll from './components/BlogPostListScroll' import { useGlobal } from '@/lib/global' -import { useEffect } from 'react' export const LayoutSearch = (props) => { const { locale } = useGlobal() const { posts, keyword } = props - useEffect(() => { - setTimeout(() => { - const container = document.getElementById('container') - if (container && container.innerHTML) { - const re = new RegExp(`${keyword}`, 'gim') - container.innerHTML = container.innerHTML.replace(re, `${keyword}`) - } - }, - 100) - }) + setTimeout(() => { + const container = document.getElementById('container') + if (container && container.innerHTML) { + const re = new RegExp(`${keyword}`, 'gim') + container.innerHTML = container.innerHTML.replace(re, `${keyword}`) + } + }, 200) return ( @@ -26,7 +22,7 @@ export const LayoutSearch = (props) => {
- +
) diff --git a/themes/next/components/BlogPostListScroll.js b/themes/next/components/BlogPostListScroll.js index a220c8ad..d3b78fa6 100644 --- a/themes/next/components/BlogPostListScroll.js +++ b/themes/next/components/BlogPostListScroll.js @@ -44,7 +44,7 @@ const BlogPostListScroll = ({ posts = [], currentSearch, showSummary = CONFIG_NE return () => { window.removeEventListener('scroll', scrollTrigger) } - }) + }, []) const targetRef = useRef(null) const { locale } = useGlobal() @@ -57,7 +57,7 @@ const BlogPostListScroll = ({ posts = [], currentSearch, showSummary = CONFIG_NE {/* 文章列表 */}
{postsToShow.map(post => ( - + ))}
@@ -65,7 +65,7 @@ const BlogPostListScroll = ({ posts = [], currentSearch, showSummary = CONFIG_NE
{ handleGetMore() }} - className='w-full my-4 py-4 text-center cursor-pointer glassmorphism shadow hover:shadow-xl duration-200 dark:text-gray-200' + className='w-full my-4 py-4 text-center cursor-pointer glassmorphism shadow hover:shadow-xl duration-200 dark:text-gray-200' > {hasMore ? locale.COMMON.MORE : `${locale.COMMON.NO_MORE} 😰`}
diff --git a/themes/next/components/Header.js b/themes/next/components/Header.js index 2b63ee72..37eb5e50 100644 --- a/themes/next/components/Header.js +++ b/themes/next/components/Header.js @@ -27,7 +27,7 @@ export default function Header(props) { }) ) } - }) + }, []) const { isDarkMode } = useGlobal() const autoScrollEnd = () => { @@ -90,7 +90,7 @@ export default function Header(props) { window.removeEventListener('scroll', scrollTrigger) window.removeEventListener('resize', updateHeaderHeight) } - }) + }, []) return (
{ if (window) { initLive2DWife() } - }) + }, []) return <> - + } -function initLive2DWife () { +function initLive2DWife() { // 注意:live2d_path 参数应使用绝对路径 const live2dPath = 'https://cdn.jsdelivr.net/gh/stevenjoezhang/live2d-widget@latest/' // const live2d_path = "/live2d-widget/"; diff --git a/themes/next/components/SideBarDrawer.js b/themes/next/components/SideBarDrawer.js index 9bc04d48..8a22505d 100644 --- a/themes/next/components/SideBarDrawer.js +++ b/themes/next/components/SideBarDrawer.js @@ -18,7 +18,7 @@ const SideBarDrawer = ({ post, cRef, tags, slot, categories, currentCategory }) useEffect(() => { const sideBarWrapperElement = document.getElementById('sidebar-wrapper') sideBarWrapperElement?.classList?.remove('hidden') - }) + }, []) const router = useRouter() useEffect(() => { @@ -52,7 +52,7 @@ const SideBarDrawer = ({ post, cRef, tags, slot, categories, currentCategory }) {/* 背景蒙版 */} -