해결된 질문
작성
·
209
1
csr 에서는 useQueryClient로 생성된 QueryClient를 가져와 사용하는 반면에
ssr 에서 prefetch 할 때에는 QueryClient 를 새로 생성해서 사용하시더라구요.
그럼 ssr에서 생긴 QueryClient csr에서 생긴 QueryClient 두개가 존재하게 되는데, 리액트쿼리가 hydrate 하는 과정에서 알아서 합쳐주는 건지 그 원리가 궁금합니다.
2. prefetch를 할 때마다 QueryClient를 새로 생성해야 하는지 아니면 ssr에서 사용할 QueryClient를 하나 생성해서 공유하는 방식으로 사용해야 하는 것인지, 또 공유해서 사용한다면 예제가 있을까요?
만약 prefetch 할 때마다 QueryClient를 새로 생성해야 한다면 성능상에 문제는 없을까요? prefetch를 난발하는 것을 멈추고 조심히 사용해야 할까요?
강의 덕분에 많이 배웠습니다. 좋은 강의 감사합니다.
답변 1
1
SSR 후에는 클라이언트에 데이터만 보냅니다. SSR시 생성한 queryClient는 prefetch를 한 후 역할을 다하고 더이상 쓰이지 않습니다.
하나만 생성해서 공유해도 되긴 할겁니다. 다만 딱히 이득은 없습니다. 파일 하나 만들어서 export const queryClient = new QueryClient(); 하고 import해서 쓰면 됩니다.
QueryClient를 new 해서 생성하는 것 자체가 시간이 거의 소요되지 않습니다.