250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Google 애널리틱스
- ResizeObserver
- Leetcode #javascript #알고리즘 #Algorithms #js
- nextjs-performance
- 과제 진행하기
- 통신망분석
- 자바스크립트
- 중첩 점
- 연결 요소 제거하기
- mock date
- JavaScript
- 테이블 해시 함수
- 리액트네이티브
- 프로그래머스
- 귤 고르기
- 최솟갑 구하기
- 헤르메스 엔진
- 구름톤챌린지
- mutationobserver
- 테스트 Date
- 구름톤 챌린지
- Jest uuid syntax
- 호텔 대실
- jest
- 구름톤
- Hermes Engine
- create-next-app
- 리액트네이티브 엔진
- nextjs
- 날짜 테스트
Archives
- Today
- Total
나만보는개발공부블로그
Multiple children layout in Nextjs 본문
Nextjs에서는 layout이라는 기능을 제공합니다.
페이지마다 공통되는 부분이 많은데 Layout을 이용하여서 재사용이 가능하게 하고 사용된 컴포넌트의 state가 유지되는 장점이 있습니다.
여기서 페이지의 왼쪽은 계속 공통된 부분(예시로 사이드 메뉴바)를 보여주고 왼쪽(예시로 메인 컨텐츠)은 링크마다 다른 페이지를 보여줘야하는 경우가 layout을 대표적으로 사용될 수 있습니다.
//pages/something.tsx
export const Something = () => {
return ...;
}
Something.getLayout = function getLayout(page: ReactElement) {
return <ExampleLayout>{page}</ExampleLayout>;
};
만약에 메뉴부분과 메인 컨텐츠부분의 보여주는 부분이 계속 달라질 경우 조금 복잡해질 수 있습니다.
메뉴부분에도 children을 전달하고 컨텐츠부분에도 children을 전달해야 할 것 같습니다.
그래서 multiple children을 전달하는 아래 코드처럼 작성할 수 있습니다.
const LobbyLayout = ({ children }: any) => {
...
return children
}
const LeftLayout = ({ children }: any) => {
...some conditonal code
return (
<LeftContainer>
{children}
</LeftContainer>
);
};
const RightLayout = ({ children }: any) => {
return <RightContainer>{children}</RightContainer>;
}
LobbyLayout.LeftLayout = LeftLayout;
LobbyLayout.RightLayout = RightLayout;
export default LobbyLayout;
사용 예시
<LobbyLayout.LeftLayout>
<DynamiceComponentLeft />
</LobbyLayout.LeftLayout>
<LobbyLayout.RightLayout>
{conditonal ? <MainWelcomeContent /> : <MainContent />}
</LobbyLayout.RightLayout>
'Web Development > Front' 카테고리의 다른 글
MutationObserver and ResizeObserver (0) | 2023.02.09 |
---|---|
Nextjs Sentry Performance 설정하기 (0) | 2023.01.09 |
Scroll restoration in Nextjs (0) | 2022.09.17 |
[Cypress] window.__coverage__ is undefined (0) | 2022.06.24 |
[NextJS] SEO for SVG image file (0) | 2022.06.07 |