Next.js를 생성해서 살펴보면 pages에 기본적으로
_app.tsx, _document.tsx 파일이 생성되어 있다.
_app은 서버로 요청이 들어왔을 때, 가장 먼저 실행되는 컴포넌트이다. 보통 페이지 공통 레이아웃을 _app에서 작성하고 한다.
위에서 설명했듯이 즉 모든 컴포넌트에 공통으로 사용할 속성들을 관리한다고 생각하면 된다.
function MyApp({ Component, pageProps }) {
return <Component {...pageProps} />
}
의 모양으로 구성되어 있다.
여기서 몇가지 규칙이 있다.
pageProps는 getInitialProps, getStatisProps, getServerSideProps 중 하나를 통해 fetch된 초기 속성값이 된다.
_app 파일에서도 getInitialProps를 사용해 모든 페이지에서 공통으로 사용할 속성을 지정할 수 있다. 하지만 Automatic Static Optimization
3번의 경우 정말 꼭 사용하여야 한다면 next/app에 App 객체를 불러온 후 사용한다.