๐Ÿธminzzi
Minzzi์•ผ
๐Ÿธminzzi
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (132)
    • ์˜ค๋ฅ˜ํ•ด๊ฒฐ (14)
    • FE (36)
      • Next.js (17)
      • React (4)
      • React Native (0)
      • TypeScript (1)
      • JavaScript (14)
    • BE (0)
      • Nest.js (0)
    • ๋ฐ๋ธŒ์ฝ”์Šค (7)
    • ์›น ํ”„๋กœ์ ํŠธ (5)
    • CS (28)
      • Algorithm (5)
      • Python (4)
      • C++ (2)
      • Operating System (4)
      • Computer Networking (3)
      • Data Structure (1)
      • Machine Learning (3)
      • Tip (6)
    • Github (4)
    • Flutter (3)
      • ํ”„๋กœ์ ํŠธ (3)
    • Private (3)
      • ํšŒ๊ณ  (7)
      • ๋ฉด์ ‘ (17)
    • ๊ฐœ๋ฐœ๋„์„œ (7)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • react
  • ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…
  • ์ด๋ฏธ์ง€ ์ตœ์ ํ™”
  • ์‹คํ–‰์ปจํ…์ŠคํŠธ
  • next.js
  • SSR
  • ํ‹ฐ์Šคํ† ๋ฆฌ์ฑŒ๋ฆฐ์ง€
  • ํž™์˜์—ญ
  • ๋ฉด์ ‘
  • ๋ ‰์‹œ์ปฌ
  • ์ด๋ฒคํŠธ๋ฃจํ”„
  • ํ˜ธ์ด์ŠคํŒ…
  • layout shift
  • reflow
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
  • ์ฝœ์Šคํƒ
  • ๋ชจ๋˜๋ฆฌ์•กํŠธ๋”ฅ๋‹ค์ด๋ธŒ
  • ์˜ค๋ธ”์™„
  • ์›์‹œํƒ€์ž…
  • ์‹คํ–‰์ปจํƒ์ŠคํŠธ

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
๐Ÿธminzzi

Minzzi์•ผ

FE/Next.js

[Next.js] page router ํŽ˜์ด์ง€๋ณ„ ๋ ˆ์ด์•„์›ƒ ์„ค์ •

2025. 5. 3. 17:44
ํ•œ ์ž… ํฌ๊ธฐ๋กœ ์ž˜๋ผ๋จน๋Š” 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
    'FE/Next.js' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [Next.js] page router - SSR
    • [Next.js] page router ์‚ฌ์ „ ๋ Œ๋”๋ง๊ณผ ๋ฐ์ดํ„ฐํŽ˜์นญ
    • [Next.js] page router - API Routes
    • [Next.js] page router - ํ”„๋ฆฌํŽ˜์นญ
    ๐Ÿธminzzi
    ๐Ÿธminzzi

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”