반응형
공통 레이아웃이 한개일때
하나의 공통된 Layout을 쓰는 경우는 pages/_app.js에 공통 레이아웃 컴포넌트를 작성하였다.
공통 레이아웃이 여러개일때
그렇다면
1페이지에서는 1번 헤더
2페이지에서는 2번 헤더
3페이지에서는 3번 헤더
이런식으로 활용하고 싶다면 어떻게 해야 할까??
Page.getLayout이라는 함수가 있다
이런식으로 pages/csr.js에 getLayout함수를 작성해주고
import { useEffect, useState } from "react";
import Layout from "../components/Layout";
import SubLayout from "../components/SubLayout";
export default function CSR() {
..생략..
return (
<>
<h1 className="title">{time}</h1>
<h2>하이</h2>
</>
);
}
CSR.getLayout = function getLayout(page) {
return (
<Layout>
<SubLayout>{page}</SubLayout>
</Layout>
);
};
_app.js에 다음과 같이 작성해주면 된다.
import Layout from "../components/Layout";
export default function App({ Component, pageProps }) {
const getLayout = Component.getLayout || ((page) => <Layout>{page}</Layout>);
return getLayout(<Component {...pageProps} />);
}
위와 같이 getLayout을 이용하여 3개의 헤더를 만든 페이지는 다음과 같다.
getLayout에 활용하는 헤더들은 pages폴더에 있지 않기 때문에
getStaticProps등을 사용할 수는 없다.
반응형
'개발 > Next.js' 카테고리의 다른 글
Next.js 에서 Next/link와 a 차이 (0) | 2022.09.18 |
---|---|
Shallow routing을 사용하면 리렌더링, 데이터페칭없이 페이지이동 가능 (2) | 2022.09.16 |
Next.js - SEO와 Pre-rendering (0) | 2022.09.14 |
ISR : 일정주기마다 업데이트 해주는 SSG (0) | 2022.09.13 |
router.push, <Link />, <a /> 차이 (0) | 2022.07.29 |