layout.tsx를 서버 컴포넌트로 유지하기 위해, HeaderWrapper.tsx 클라이언트 컴포넌트로 따로 분리
import React, { PropsWithChildren } from "react";
import NavBarWrapper from "@/components/NavBarWrapper";
import HeaderWrapper from "@/components/HeaderWrapper";
const MainLayout = ({ children }: PropsWithChildren) => {
return (
<>
<HeaderWrapper />
<main>{children}</main>
<NavBarWrapper />
</>
);
};
export default MainLayout;
해당 훅 사용 시 클라이언트 컴포넌트에서 사용 필요 (”use client”)
"use client";
import { usePathname } from "next/navigation";
import Header from "./Header";
const HeaderWrapper = () => {
const pathname = usePathname();
const hideHeaderPaths = ["write-diary", "diary-detail", "todo-detail", "ai-profile"];
const shouldHideHeader = hideHeaderPaths.some((path) => pathname.includes(path));
if (shouldHideHeader) {
return null;
}
return <Header />;
};
export default HeaderWrapper;