From 263f62033f91d394bb885dcf0983acd299bbe152 Mon Sep 17 00:00:00 2001 From: wood chen Date: Sat, 22 Feb 2025 00:34:30 +0800 Subject: [PATCH] refactor: Remove session update effect and rename NavBar component --- src/app/()/page.tsx | 4 ++-- src/components/layout/nav-bar-wrapper.tsx | 19 +++++++++++++++++++ src/components/layout/nav-bar.tsx | 9 +-------- 3 files changed, 22 insertions(+), 10 deletions(-) create mode 100644 src/components/layout/nav-bar-wrapper.tsx diff --git a/src/app/()/page.tsx b/src/app/()/page.tsx index afc01bf..0b8c636 100644 --- a/src/app/()/page.tsx +++ b/src/app/()/page.tsx @@ -18,12 +18,12 @@ import { TypographyLead, TypographyMuted, } from "@/components/ui/typography"; -import { NavBar } from "@/components/layout/nav-bar"; +import { NavBarWrapper } from "@/components/layout/nav-bar-wrapper"; export default function HomePage() { return (
- +
diff --git a/src/components/layout/nav-bar-wrapper.tsx b/src/components/layout/nav-bar-wrapper.tsx new file mode 100644 index 0000000..b338c55 --- /dev/null +++ b/src/components/layout/nav-bar-wrapper.tsx @@ -0,0 +1,19 @@ +"use client"; + +import { useEffect } from "react"; +import { usePathname, useRouter } from "next/navigation"; + +import { NavBar } from "./nav-bar"; + +export function NavBarWrapper() { + const router = useRouter(); + const pathname = usePathname(); + + useEffect(() => { + if (pathname?.startsWith("/dashboard") || pathname?.startsWith("/admin")) { + router.refresh(); + } + }, [pathname, router]); + + return ; +} diff --git a/src/components/layout/nav-bar.tsx b/src/components/layout/nav-bar.tsx index b32deaa..3229aa7 100644 --- a/src/components/layout/nav-bar.tsx +++ b/src/components/layout/nav-bar.tsx @@ -21,18 +21,11 @@ import { ThemeToggle } from "../theme-toggle"; import { Button } from "../ui/button"; export function NavBar() { - const { data: session, status, update } = useSession(); + const { data: session, status } = useSession(); const router = useRouter(); const pathname = usePathname(); const user = session?.user; - // 在 dashboard 或 admin 页面时强制刷新一次 session - useEffect(() => { - if (pathname?.startsWith("/dashboard") || pathname?.startsWith("/admin")) { - update(); - } - }, [pathname, update]); - const handleSignOut = async () => { await signOut({ redirect: false }); router.refresh();