Next.js

[Next.js] Layouts and Templates

note-for-development 2024. 5. 17. 23:38

Layout

레이아웃은 여러 라우트가 공유하는 UI다.

페이지와 같은 위치에 있으면 페이지를 감싸며 생성된다.

상위폴더와 하위폴더가 모두 레이아웃이 있는 경우 중첩되어 생성될 수도 있다.

 

레이아웃은 처음 랜더링 후 다시 랜더링되지 않는다.

따라서 중첩되는 레이아웃이 있어도 레이아웃간 데이터를 전달할 수 없다. 

layout.js 파일에서 React 컴포넌트를 내보내 레이아웃 UI를 생성한다.

 

 

Root Layout

모든 라우트에 적용되는 레이아웃으로 필수적으로 포함해야 한다.

또한 html, body tag를 포함해야 한다.

Root Layout 이외에는 html, boty tag를 포함할 수 없다.

*Layout은 server, client Compnent에 모두 적용할 수 있으나, Root Layout만은 server Component다.

 

Templates

페이지를 감싼다는 부분에서는 Layout과 유사하다.

이동 시 각 자식에 대한 새로운 인스턴스가 생성된다.

즉, 네비게이션으로 이동할 때 변화가 생기는 부분이다.

이때 DOM이 다시 생성되며 갱신된다.

 

레이아웃과 템플릿은 함께 사용할 수도 있다.

template.js 파일에서 React 컴포넌트를 내보내 템플릿 UI를 생성한다.

*변화 여부에 따라 레이아웃과 템플릿으로 나누어 사용하면 된다.