각 페이지마다 공통적인 레이아웃을 반복해서 정의할 필요가 없으며, 레이아웃 변경 시 하나의 컴포넌트만 수정하면 전체 페이지에 적용.
[한입 크기로 잘라먹는 Next.js(15+)]
Global Layout
1 | |
1 | |
App 컴포넌트는 Next.js의 커스텀 App 컴포넌트로, Next.js에서 각 페이지를 렌더링할 때 공통으로 사용되는 엔트리 포인트.
여기서 Component → 현재 렌더링 될 페이지 컴포넌트,
pageProps → 해당 페이지에 전달되는 props
즉, App 컴포넌트는 모든 페이지에 대해 공통적으로 레이아웃을 설정하고 페이지 전환 시에도 유지.
- GlobalLayout 컴포넌트는 모든 페이지에 공통적으로 사용되는 레이아웃을 정의
Component가 실제 렌더링 될 페이지, 이를 GlobalLayout 컴포넌트의children으로 전달하여 해당 페이지의 콘텐츠를 전역 레이아웃 안에 표시.
Global Layout 적용의 원리
- _app.tsx에서 전역 레이아웃을 적용하는 것은 모든 페이지가 전역적으로 같은 레이아웃을 사용하도록 보장하기 위한 방법.
- GlobalLayout으로 감싸진 페이지 콘텐츠가 모든 페이지에서 동일한 스타일과 구조를 유지할 수 있게 하며,
header와 footer 같은 공통된 UI 요소를 재사용. - 이를 통해, 각 페이지마다 공통적인 레이아웃을 반복해서 정의할 필요가 없으며, 레이아웃 변경 시 하나의 컴포넌틍만 수정하면 전체 페이지에 적용
페이지별 Layout
- 어떠한 특정 페이지에서만 보여야한다면, 그 페이지에 들어가서 getLayout 메서드 호출
1 | |
getLayout 메서드
page라는 매개변수로 현재의 페이지 역할을 할 컴포넌트를 받아와서 SearchableLayout 이라는 별도의 레이아웃으로 감싸진 형태의 페이지로 리턴해주는 함수- 해당 페이지 컴포넌트를 SeachableLayout으로 묶어서 리턴.
- 참고자료
1 | |
App 컴포넌트에서는 위와 같이 설정.
위처럼 설정하면 getLayout 설정을 안해준 페이지는 오류 발생
→ 병합연산자 사용
1 | |