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

0S님의 프로필 이미지
0S

작성한 질문수

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

React-query 부분에서 질문이 있습니다.

작성

·

205

0

강의 언제나 잘보고 있습니다.

따로 작업하다가 난감한게 있어서 문의드립니다.

예를 들어 ["ABC"] 라는 캐시가 있다는 가정하에

A페이지, B페이지에서 해당 캐시를 사용합니다.

이때 질문이 있습니다.

 

  1. A,B 페이지에서 useQuery로 데이터를 불러올 경우


    실수로 A와 B가 다른 queryFn이 정의 되어있을 때,
    InvalidateQueries를 해도 데이터가 미스매칭될 수 있는 가능성이 존재할까요?

  2. prefetchQuery 사용 시,
    A페이지와 B페이지가 ABC라는 데이터가 공통으로 필요할 경우,
    A페이지에서 prefetchQuery를 읽어서 B로 가면 A의 ABC를 캐시해서 B에서도 사용 가능한 걸로 알고있는데요.
    이럴때 만일 B페이지로 바로 접근이 가능할 경우,
    B 페이지에서도 prefetchQuery를 적용해야 둘다 SSR이 제대로 적용되는걸까요?

     

답변 1

0

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

  1. 네 가능합니다. 다른 페이지에서 서로 다른 함수로 데이터를 불러와 덮어씌울것입니다.
    https://github.com/TanStack/query/discussions/4020#discussioncomment-3383934
    제작자의 답변으로는 첫 번째로 옵저버로 등록된 queryFn이라고는 하는데 말투에 확신은 없네요.

  2. 서버쪽에 A 페이지 통해서 불러온 캐시가 남아있고 하나의 쿼리 클라이언트에서 공유된다면 B 페이지에 바로 접근했을 때 A 페이지의 캐시를 가져올 수 있습니다. 다만 쿼리 클라이언트를 공유해주셔야 합니다.

0S님의 프로필 이미지
0S
질문자

B로 바로 접근할때 A에서 캐시를 못 불러오면, B에서 새로 불러오는 코드를 짜야하는건가요?

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

그냥 A랑 똑같은 queryFn 넣어두시면 됩니다만..?

0S님의 프로필 이미지
0S
질문자

A.tsx

....
prefetchQuery({
queryKey:["ABC"]
queryFn:getABC()
})

B.tsx

...
prefetchQuery({
queryKey:["ABC"]
queryFn:getABC()
})

아하 그냥 똑같은걸 두번 쓰면 되는건가요?

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

getABC 처럼 함수만 넣으셔야 합니다. 호출하시면 안 됩니다.

0S님의 프로필 이미지
0S
질문자

너무 감사드립니다 🙂 !!!!!!!

0S님의 프로필 이미지
0S

작성한 질문수

질문하기