강의

멘토링

로드맵

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

찹찹이님의 프로필 이미지
찹찹이

작성한 질문수

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

클라이언트 react-query

Post 정보 불러올 때

작성

·

46

·

수정됨

0

안녕하세요 제로초님 질문있습니다.

 

강의에서 post 데이터 서버로부터 불러오고 화면에 렌더링 해주는 과정을 아래와 같이 이해하였습니다.

 

  1. prefetchQuery 로 서버로부터 데이터를 가져온다.

  2. 그렇게 가져온 데이터를 client component 에서 useQuery 로 가져온다

 

위와 같이 하는 이유가 궁금합니다. 사실 처음부터 클라이언트 컴포넌트로 useQuery 만 써도 문제없이 동작할텐데

useQuery 이전에 prefetchQuery 로 먼저 불러오는 이유는 ssr 을 위해서이고, 그말은 즉 seo 를 위해서 인가요? (useQuery 만 사용하면 csr 방식이여서..?)

 

감사합니다.

답변 1

0

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

네네 ssr을 해서 seo를 하기 위한 용도입니다. 필요없다면 그냥 useQuery만 하셔도 됩니다

찹찹이님의 프로필 이미지
찹찹이
질문자

아하 감사합니다.

 

추가 궁금한 것 있습니다.

PostRecommends 자체를 서버 컴포넌트로 만들어서 fetch 를 하면 ssr 이겠지만 이 방식은

무한 스크롤과 같은 작업을 하지 못해서

prefetchQuery -> useQuery 두 단계를 거치는거라고 이해해도 될까요??

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

prefetchQuery를 쓰지 않으면 ssr한 데이터를 useQuery로 그대로 데이터를 내려보내주기 번거로워져서 사용합니다.

prefetchQuery 안 쓰더라도 서버컴포넌트에서 fetch후 props 통해서 useQuery로 보낼 수도 있습니다.

찹찹이님의 프로필 이미지
찹찹이
질문자

그리고 추가로 궁금한 것이 있습니다. 😅

 

만약에

  1. prefetchQuery -> useQuery 방식이든

  2. 서버컴포넌트 fetch -> useQuery 방식이든

서버에서 데이터를 불러오고나서

클라이언트 컴포넌트에서 렌더링을 완성? 하는거잖아요

근데 아무리 서버에서 데이터를 불러온다해도 렌더링은 클라이언트 컴포넌트에서 하는 것이고,

그렇다면 미리 html 을 만들어둔 것이 아니니까 seo 에 불리한 것 아닌가요??

 

서버에서 렌더링이 완료 된 채로 넘겨주는 것이 아닌, 데이터만 불러오고 렌더링은 브라우저?에서 하는 거니까요.

 

이부분이 항상 궁금증으로 있었습니다.

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

서버에서 hook 부분을 제외하면 렌더링이 완료된 채로 넘겨줍니다 ㅎㅎ 서버 컴포넌트도 클라이언트 컴포넌트의 일부를 실행할 수 있습니다. 물론 hook을 사용해서 렌더링하는 부분은 나오지 않지만, 서버에서는 대신 meta 태그(head 부분의)를 넣어서 로봇한테 seo 관련된 정보를 줄 수 있습니다. SEO 로봇은 html body 컨텐츠보다도 meta tag의 영향을 제일 많이 받습니다.

찹찹이님의 프로필 이미지
찹찹이
질문자

우아 답변 감사합니다!!

찹찹이님의 프로필 이미지
찹찹이

작성한 질문수

질문하기