ํ ์ ํฌ๊ธฐ๋ก ์๋ผ๋จน๋ Next.js ํ์ต์ ๋ฆฌ์ฉ์ ๋๋ค.
2.8) ํ์ด์ง๋ณ ๋ ์ด์์ ์ค์ ํ๊ธฐ
ํ์ด์ง๋ณ๋ก ํน์ Layout ์ปดํฌ๋ํธ๋ฅผ ์ ์ฉํ๋ ๋ฐฉ๋ฒ
import SearchableLayout from "@/components/searchable-layout";
import style from "./index.module.css";
import { ReactNode } from "react";
export default function Home() {
return (
<>
<h1 className={style.h1}>์ธ๋ฑ์ค</h1>
<h2 className={style.h2}>H2</h2>
</>
);
}
Home.getLayout = (page: ReactNode) => {
return <SearchableLayout>{page}</SearchableLayout>;
};
ํ์ด์ง๋ง๋ค ํน์ Layout ์ปดํฌ๋ํธ๋ฅผ ์ ์ฉํด์ผ ํ ๋๊ฐ ์๋๋ฐ, ๊ทธ๋ด ๋๋ getLayout ๋ฉ์๋๋ฅผ ์ด์ฉํด์ Layout์ ์ ์ฉํ ์ ์๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์ ํจ์๋ ๋ชจ๋ ๊ฐ์ฒด์ด๊ธฐ ๋๋ฌธ์ ์์ ๊ฐ์ ์์ผ๋ก ์ถ๊ฐ ๊ฐ๋ฅํ๋ค.
๋ฃจํธ ์ปดํฌ๋ํธ์์ ์ด getLayout์ ๋ถ๋ฌ์ค๊ธฐ ์ํด์ ์๋์ ๊ฐ์ด ํ๋ฉด๋๋ค.
import GlobalLayout from "@/components/global-layout";
import "@/styles/globals.css";
import { NextPage } from "next";
import type { AppProps } from "next/app";
import { ReactNode } from "react";
type NextPageWithLayout = NextPage & {
getLayout?: (page: ReactNode) => ReactNode;
};
export default function App({
Component,
pageProps,
}: AppProps & { Component: NextPageWithLayout }) {
const getLayout = Component.getLayout ?? ((page: ReactNode) => page);
return <GlobalLayout>{getLayout(<Component {...pageProps} />)}</GlobalLayout>;
}
NextPage : ํ์ด์ง ์ปดํฌ๋ํธ์ ํ์ ์ ๋ช ์ํ๊ธฐ ์ํ ํ์
'FE > Next.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Next.js] page router - SSR (3) | 2025.05.05 |
---|---|
[Next.js] page router ์ฌ์ ๋ ๋๋ง๊ณผ ๋ฐ์ดํฐํ์นญ (0) | 2025.05.05 |
[Next.js] page router - API Routes (0) | 2025.05.03 |
[Next.js] page router - ํ๋ฆฌํ์นญ (0) | 2025.05.03 |
[Next.js] Page Router, ์ค์ , ๋ค๋น๊ฒ์ดํ (1) | 2025.05.02 |