_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} />)
}
Component
는 페이지를 의미한다.- 따라서, 페이지가
getLayout
을 가지고 있다면 그것을 보여주고, 가지고 있지 않다면 다른 구조를 보여주도록 조건을 주면 된다.
[ 페이지 ]
csr.js
import Layout from '../components/Layout'
import SubLayout from '../components/SubLayout'
export default function CSR() {
return (
<h1>title</h1>
)
}
CSR.getLayout = function getLayout(page) {
return (
<Layout>
<SubLayout>{page}</SubLayout>
</Layout>
)
}
ssr.js
import Layout from '../components/Layout'
import SubLayout from '../components/SubLayout'
export default function SSR() {
return (
<h1>title</h1>
)
}
SSR.getLayout = function getLayout(page) {
return (
<Layout>
<SubLayout>{page}</SubLayout>
</Layout>
)
}
이런 식으로 확장성 높은 Layout 을 구축할 수 있다.
728x90
'간단 기록' 카테고리의 다른 글
[React] 새 창에서 동일한 세팅 값 유지하도록 하기 (URL query string 활용) (1) | 2024.06.10 |
---|---|
[React] useRef 하나로 여러 데이터 관리하기 (feat. ag-grid) (0) | 2024.01.18 |
[Next.js] window.innerWidth 가져오는 커스텀 훅 만들기 (0) | 2023.06.18 |
[FE] 답글 화면 구현하기 (+재귀함수) (feat. React) (0) | 2023.04.02 |
댓글