인프런 커뮤니티 질문&답변
getLayout이 받는 page라는 인자는 왜 "현재 페이지"인가요??
해결된 질문
작성
·
435
0
각 페이지에 레이아웃을 덮어씌워 보내는 함수인 getLayout이라는 메소드는 저희가 정의한 커스텀 메소드인데
이 메소드가 받는 page라는 인자는 어떻게 현재 페이지가 되는지 모르겠습니다.
떄문에 app.tsx에서 해당하는 Component(접속한 페이지)의 getLayout이라는 메소드가 없을 경우에 (page)=> page라는 함수를 리턴시켜 기본의 페이지를 리턴한다는 맥락도 또한 이해가 가지 않습니다.
page라는 인자는 도대체 왜 현재페이지라고 인식해서 오는지요ㅠㅜ
답변 4
1
1
컴포넌트가 return 하는 것은 jsx이기 때문에 아무런 인자를 넣어도 해당 인자를현재 page로 인식하는거군요!
예를 들어 코드를 Home.getLayout=(apple:ReactNode) => { return <SearchableLayout>{apple}</SearchableLayout} 라고 개연성 없이 작성했어도 apple은 현재 페이지가 되는거구요!
0
안녕하세요 이정환입니다.
스스로 답을 찾으셨군요 👍 멋집니다!
맞아요 getLayout 호출시에 인수로 전달되는 값이 결국 컴포넌트로 표현된 페이지이기 때문입니다
0
안녕하세요, 인프런 AI 인턴입니다.
Mungyun1234님께서 질문하신 내용은 Next.js에서 페이지별 레이아웃을 적용하기 위해 사용하는 getLayout 메서드가 어떻게 현재 페이지를 받아오는지에 관한 이해를 돕기 위한 질문입니다.
getLayout 메서드는 각 페이지 컴포넌트에서 정의되며, 이 메서드는 레이아웃을 적용하고자 하는 페이지를 인자로 받습니다. 이 page라는 인자는 실제로 현재 페이지 컴포넌트를 JSX 형태로 표현한 것입니다.
다음은 그 과정에 대한 간단한 설명입니다:
App 컴포넌트에서의 역할:
App컴포넌트에서는Component를 사용하여 현재 열람 중인 페이지 컴포넌트에 접근합니다. 이Component는 Next.js가 라우팅을 통해 현재 페이지에 맞는 컴포넌트를 제공합니다.
Component.getLayout이 정의되어 있다면,Component.getLayout함수를 호출하여 해당 페이지에 레이아웃을 적용할 수 있습니다. 이때 인자로 넘기는 것이Component의 JSX 표현, 즉 현재 페이지 내용입니다.
page 인자의 정체:
page인자는 실제로App컴포넌트가 렌더링하는Component의 JSX 형태입니다. 이는App컴포넌트 내부에서getLayout메서드를 사용하는 부분에서Component를<Component {...pageProps} />로 표현하며 전달됩니다.
기본적으로 페이지를 반환하는 경우:
- 만약 
Component가getLayout을 정의하지 않았다면, 기본적으로 그 페이지 자체를 반환하도록(page) => page라는 함수를 사용합니다. 이는 특별한 레이아웃 없이 본래의 페이지 내용을 유지하면서 렌더링하기 위함입니다.
 
- 만약 
 
이 과정은 페이지별로 다른 레이아웃을 유연하게 적용할 수 있도록 설계된 것입니다. 이를 통해 공통 레이아웃 이외에 개별 페이지에 맞는 특별한 레이아웃을 지정할 수 있습니다.
이해가 되셨기를 바라며, 더 궁금한 점이 있으시면 언제든 질문해 주세요. 그리고 관련하여 더 자세한 설명이 필요하면 아래 유사한 질문 링크에서의 답변을 참고하셔도 좋습니다:
- “getLayout을 왜 사용하는 건가요?? (5:20)”: 이 질문에서는 
getLayout메서드를 이용한 페이지별 레이아웃 설정 방법에 대한 구체적인 설명이 포함되어 있습니다.
 
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




