인프런 커뮤니티 질문&답변

강창룡님의 프로필 이미지
강창룡

작성한 질문수

Next + React Query로 SNS 서비스 만들기

인피니트 스크롤링

AuthProvider 사용 시 서버 컴포넌트가 궁금합니다.(+ API 관련)

작성

·

177

0

안녕하세요. 항상 강의 잘 보고 있습니다!

 

  1.  

  return (
    <html lang="en">
      <body className={inter.className}>
      <MSWComponent />
      <AuthSession>
        {children}
      </AuthSession>
      </body>
    </html>
  )

next-auth 강의 내용 중 최상위 layout.tsx에서 위 코드와 같이 AuthSession 감싸주신 걸 볼 수 있는데 이는 next-auth에서 제공하는 SesisonProvider를 통해 감싸진 자식 컴포넌트들에서 session 데이터를 공유하기 위함으로 이해하였습니다.

 

그런데 SessionProvider는 useSession 훅을 사용하는 컴포넌트에 대해 session 데이터를 공유하는 것이기에 "use client"가 사용되는데 최상위 layout 파일에 AuthSession으로 그것의 children을 감싸게 되면 그 아래에 포함된 모든 컴포넌트들이 전부 클라이언트 컴포넌트가 되기 때문에 이렇게 되었을 때 계층 아래의 서버컴포넌트들이 제대로 서버 컴포넌트로써 작동할 수 있는지가 궁금합니다.

 

그래서 useSession을 사용해야 하는 컴포넌트의 상위에서만 해당 provider로 감싸주고 서버 컴포넌트에서 session이 필요한 경우 해당 provider로 감싸지 않아도 session을 가져올 수 있지 않나 궁금증이 들어 질문드립니다.

 

답변 1

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

강의에서 말씀드렸는데요. 클라이언트에서 서버 컴포넌트를 import한 경우에만 서버 컴포넌트가 클라이언트 컴포넌트가 됩니다. children이나 기타 props로 전달한 경우에는 서버 컴포넌트가 그대로 서버 컴포넌트입니다.

지금은 children prop으로 전달했으니 서버 컴포넌트가 유지되고요.

강창룡님의 프로필 이미지
강창룡
질문자

아 그렇네요 그 부분을 놓쳤습니다... 답변 감사합니다!

강창룡님의 프로필 이미지
강창룡

작성한 질문수

질문하기