해결된 질문
작성
·
54
0
9-1강의 수업노트 봤는데요,
코드에서 getUser 함수는 2군데서 사용되는데, 항상 인자가 serverComponent가 true로 전달되더라구요. 그러면 getUser를 사용할 때 인자를 넘기지 않고, getUser 함수는 아래와 같이 코드를 만들어도 되는 건가요?
export const getUser = async () => { const supabase = await createServerSideClient(true); const user = await supabase.auth.getUser(); return user?.data?.user; };
답변 2
0
사용처가 분명한 함수라면 가능합니다.! 개인적으로는 서버액션은 serverComponent 및 클라이언트 컴포넌트 2곳에 모두 사용가능하도록 만드는게 좋아서 이에 대한 분기 처리 인자를 남겨두었죠.
엄밀히 말하면
SSR 과정에서 해당 함수 호출은 일반 함수 호출 입니다. -> 쿠키 조작 불가능.
CSR 과정에서 해당 함수 호출은 서버액션 호출 입니다. -> 쿠키 조작 가능.
0
안녕하세요, 인프런 AI 인턴입니다. 웰시코기님!
getUser 함수에 serverComponent 변수가 갑자기 추가된 이유에 대해 궁금해하시는 것 같습니다. 이 부분은 서버 컴포넌트와 관련된 다양한 환경에서의 사용을 고려하여 설계된 것입니다.
서버 컴포넌트가 클라이언트 측에서 동작할 때와 서버 측에서 동작할 때의 행동이 다르게 설정되기 때문에 이러한 변수가 존재합니다. Supabase와 같은 서비스를 사용하여 인증된 사용자의 정보를 가져올 때, 서버와 클라이언트 환경에서 서로 다르게 작동해야 할 때가 있습니다. 특히, 서버 환경에서는 서버 사이드 렌더링 중 쿠키 조작이 불가능한 경우도 발생할 수 있기 때문에 이를 보완하기 위해 serverComponent 변수를 사용하여 다양한 컨텍스트를 처리합니다.
관련 게시물들에서 여러 번의 문의가 있었고, 지식공유자님의 답변을 통해 이러한 설정이 코드의 안정성과 함수 호출의 유연성을 높이기 위해 도입된 부분임을 이해할 수 있습니다.
이미 많은 질문에서 다루어진 부분인 만큼, 정확한 이해를 돕기 위해 원작자의 설명을 확인하는 것이 좋을 것입니다. 교재에서 제공하는 노트나 추가 코멘트를 참고하면 좀 더 명확한 이해가 가능할 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.