
1. Layout
: 필요한 것을 복사 붙여넣기 없이 어디서나 사용할 수 있는 시스템
2. Layout 적용 과정
- layout component에 있는 export된 default component를 렌더링 → 실제 렌더링
- 이동하려는 페이지를 URL을 통해 인식 → component(layout component의 children prop)를 렌더링
- TypeScript) children의 타입이 ReactNode
- children이 실제 내가 이동하려는 페이지
import Navigation from "./components/navigation" export const metadata = { title: 'Next.js', description: 'Generated by Next.js', } export default function RootLayout({ children, }: { children: React.ReactNode }) { return ( <html lang="en"> <body> <Navigation /> {children} </body> </html> ) }
3. 특정 Layout 만들기
- 해당 URL 폴더에 layout.tsx 파일 만들기
- 기존의 layout.tsx 파일 복사 붙여넣기 해서 틀 잡고 수정하기
export default function AboutUsLayout({ children, }: { children: React.ReactNode }) { return ( <div> {children} © Next JS is great! </div> ) }


- 해당 URL 내에 페이지 만들기
- 새로운 페이지의 layout이 없는 경우 상위 폴더의 layout이 적용되어있음
export default function Sales() { return ( <div> <h1>Sales jobs</h1> </div> ); }


- Layout은 중첩이 가능함



Share article