레이아웃
레이아웃은 여러 페이지에서 반복되는 UI 요소(헤더, 네비게이션 바, 푸터 등)를 일관성 있게 관리하기 위한 구조예요. 공통 레이아웃을 정의하면 코드 중복을 줄이고, 일관된 사용자 경험을 제공할 수 있어요.
레이아웃 파일 만들기
레이아웃은 _layout.tsx 파일을 생성해서 정의해요. 파일의 위치에 따라 적용되는 범위가 달라져요.
import { PropsWithChildren } from "react";
export default function Layout({ children }: PropsWithChildren) {
return <>{children}</>;
}레이아웃 적용 범위 설정하기
레이아웃은 파일 경로에 따라 자동으로 적용돼요.
pages/_layout.tsx: 모든 페이지에 전역 적용돼요.pages/about/_layout.tsx:intoss://{서비스명}/about하위의 모든 페이지에만 적용돼요.
레이아웃은 중첩해서 사용할 수 있어요. 여러 레이아웃이 함께 있을 때는 상위 디렉토리의 레이아웃부터 순서대로 적용돼요.
pages/
├── _layout.tsx // 전역 레이아웃
├── about/
│ ├── _layout.tsx // about 섹션 레이아웃
│ ├── index.tsx // about 메인 페이지
│ └── team.tsx // 팀 소개 페이지
└── index.tsx // 메인 페이지예를 들어, 위와 같은 구조라면 about/team.tsx 페이지는 아래 순서로 레이아웃이 적용돼요.
pages/_layout.tsx(전역 레이아웃)pages/about/_layout.tsx(섹션 레이아웃)pages/about/team.tsx(실제 페이지 컴포넌트)
이렇게 구성하면 전역적으로 필요한 UI 요소와, 특정 섹션에서만 필요한 UI 요소를 분리해서 관리할 수 있어요.
레이아웃 예시
전역 레이아웃
모든 페이지에 공통으로 적용되는 레이아웃을 만들어볼게요.
섹션별 레이아웃
특정 섹션에서만 사용하는 레이아웃을 만들 수 있어요.
레이아웃에서 쿼리 파라미터 받아오기
레이아웃에서도 쿼리 파라미터를 사용할 수 있어요. useParams 훅을 이용하면 현재 화면의 파라미터를 읽어서 동적으로 활용할 수 있어요.
useParams 훅 사용 예시
아래 예시는 URL 쿼리 파라미터로 전달된 title 값을 가져와서 화면 상단 제목으로 표시해요.
참고 문서
쿼리 파라미터 사용하기
마지막 업데이트
도움이 되었나요?