inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

한 입 크기로 잘라먹는 Next.js

2.8) 페이지별 레이아웃 설정하기

getLayout이 받는 page라는 인자는 왜 "현재 페이지"인가요??

해결된 질문

462

mungyun1234

작성한 질문수 6

0

각 페이지에 레이아웃을 덮어씌워 보내는 함수인 getLayout이라는 메소드는 저희가 정의한 커스텀 메소드인데

이 메소드가 받는 page라는 인자는 어떻게 현재 페이지가 되는지 모르겠습니다.

 

떄문에 app.tsx에서 해당하는 Component(접속한 페이지)의 getLayout이라는 메소드가 없을 경우에 (page)=> page라는 함수를 리턴시켜 기본의 페이지를 리턴한다는 맥락도 또한 이해가 가지 않습니다.

page라는 인자는 도대체 왜 현재페이지라고 인식해서 오는지요ㅠㅜ

react typescript next.js

답변 4

1

mungyun1234

아 제가 너무 어렵게 생각했네요 그냥 getLayout을 호출할떄 넣는 인자가 컴포넌트여서 그런거군요..... 하하

1

mungyun1234

컴포넌트가 return 하는 것은 jsx이기 때문에 아무런 인자를 넣어도 해당 인자를현재 page로 인식하는거군요!

예를 들어 코드를 Home.getLayout=(apple:ReactNode) => { return <SearchableLayout>{apple}</SearchableLayout} 라고 개연성 없이 작성했어도 apple은 현재 페이지가 되는거구요!

0

이정환 Winterlood

안녕하세요 이정환입니다.

스스로 답을 찾으셨군요 👍 멋집니다!

맞아요 getLayout 호출시에 인수로 전달되는 값이 결국 컴포넌트로 표현된 페이지이기 때문입니다

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

Mungyun1234님께서 질문하신 내용은 Next.js에서 페이지별 레이아웃을 적용하기 위해 사용하는 getLayout 메서드가 어떻게 현재 페이지를 받아오는지에 관한 이해를 돕기 위한 질문입니다.

getLayout 메서드는 각 페이지 컴포넌트에서 정의되며, 이 메서드는 레이아웃을 적용하고자 하는 페이지를 인자로 받습니다. 이 page라는 인자는 실제로 현재 페이지 컴포넌트를 JSX 형태로 표현한 것입니다.

다음은 그 과정에 대한 간단한 설명입니다:

  1. App 컴포넌트에서의 역할:

    • App 컴포넌트에서는 Component를 사용하여 현재 열람 중인 페이지 컴포넌트에 접근합니다. 이 Component는 Next.js가 라우팅을 통해 현재 페이지에 맞는 컴포넌트를 제공합니다.
    • Component.getLayout이 정의되어 있다면, Component.getLayout 함수를 호출하여 해당 페이지에 레이아웃을 적용할 수 있습니다. 이때 인자로 넘기는 것이 Component의 JSX 표현, 즉 현재 페이지 내용입니다.
  2. page 인자의 정체:

    • page 인자는 실제로 App 컴포넌트가 렌더링하는 Component의 JSX 형태입니다. 이는 App 컴포넌트 내부에서 getLayout 메서드를 사용하는 부분에서 Component<Component {...pageProps} />로 표현하며 전달됩니다.
  3. 기본적으로 페이지를 반환하는 경우:

    • 만약 ComponentgetLayout을 정의하지 않았다면, 기본적으로 그 페이지 자체를 반환하도록 (page) => page라는 함수를 사용합니다. 이는 특별한 레이아웃 없이 본래의 페이지 내용을 유지하면서 렌더링하기 위함입니다.

이 과정은 페이지별로 다른 레이아웃을 유연하게 적용할 수 있도록 설계된 것입니다. 이를 통해 공통 레이아웃 이외에 개별 페이지에 맞는 특별한 레이아웃을 지정할 수 있습니다.

이해가 되셨기를 바라며, 더 궁금한 점이 있으시면 언제든 질문해 주세요. 그리고 관련하여 더 자세한 설명이 필요하면 아래 유사한 질문 링크에서의 답변을 참고하셔도 좋습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

풀라우트캐시 동작 원리에서 데이터 캐시 관련 질문

0

43

2

next.js 프로젝트

0

38

1

Next.js + Tanstack Query BFF 구조 질문

0

39

2

Next.js 사전렌더링 이해하기 부분

0

42

2

모달 관련 질문

0

50

3

렌더링 관련 질문

0

87

2

중복으로 하나의 api를 요청할 때 캐싱 옵션 통일화

0

72

2

라우트 세그먼트 옵션 강좌 노트에 사소한 제보 남깁니다.

0

69

2

SSR시 context에 params말고 query를 사용하면 안되나요?

0

81

2

npx prisma db push 시 에러가 뜹니다.

0

98

3

vercel 배포를 실패하였습니다.

0

114

3

Image 컴포넌트 사용시 브라우저 콘솔에 경고는 왜 뜨는걸까요?

0

66

2

getServerSideProps 함수와 SSR의 관계

0

85

6

없는 페이지인데 풀라우트캐시로 저장이 되는 이유가 궁금합니다

0

66

2

실제 프로젝트에서 SSR 사용에 관해서 질문드립니다.

0

119

2

일반적인 nextjs project architecture에 대하여..

0

95

2

2.14 Search에서 작성한건 static이긴하지만 CSR이 아닌가요?

0

77

2

배포 시 오류 발생

0

93

2

백엔드 서버 오류납니다.

0

89

2

취약점 제거시 nestjs 버전 문제가 생길까요?

0

98

1

eslint.config.mjs 내 rules 어떻게 설정 하나요?

0

113

1

[book]/[id]/page.tsx 모달 띄울 때 성능 하락 현상은 ReviewList를 불러오면서 발생하는 문제 같습니다.

0

67

2

빨간줄 설정

0

86

2

익스텐션 질문

0

63

1