개발자
쿼리를 refetch해준다는 것인가요? 정말 무슨말인지 정확히 의미전달이 안됩니다 쉽게 설명해주실 수 있나요?
답변 1
인기 답변
refetch를 하는 게 맞습니다. 다만, invalidateQueries는 일반 refetch와 다르게 똑똑하게 리패칭을 합니다. invalidateQueries는 활성화(active)된 쿼리를 찾아서 refetch를 합니다. 일반 refetch는 활성화/비활성화(inactive) 상관없이 무조건 refetch를 합니다. 비활성화된 쿼리는 해당 쿼리가 어느 컴포넌트에서도 쓰이고 있지 않는 상태를 의미합니다. 활성화된 쿼리만 refetch를 하면 아무래도 필요한 네트워크 요청만 서버에 요청하므로 트래픽을 아낄 수 있겠죠? 참고로, invalidate(무효화)라는 이름이 붙은 이유는 refetch를 하기 전에 쿼리를 만료(stale) 상태로 만드는 작업이 추가적으로 붙기 때문입니다. 설명을 듣는 것보다 실제 코드를 보면서 내용을 따라가보시는 걸 추천드립니다. 함수 내용을 보면 실제 코드는 18줄밖에 되지 않아서, 코드를 보고 어떤 동작을 하고 있는지 느낌만 파악하셔도 도움이 되실겁니다. https://github.com/TanStack/query/blob/main/packages/query-core/src/queryClient.ts#L250C3-L268
익명
작성자
2024년 01월 27일
정말 감사합니다 이해가 됐습니다
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2024년 01월 24일
네, 맞습니다. React Query의 'invalidateQueries' 메소드는 특정 쿼리 데이터를 무효화하게 됩니다. 이 무효화는 기본적으로 해당 쿼리에 대한 캐시된 데이터가 이제 유효하지 않고 다시 가져와야 함을 의미합니다. 이것은 이전에 수행되었던 API 호출에 대한 결과 데이터가 변경되었을 가능성이 있음을 알려주는 것입니다. 따라서 "무효화" 한다는 것은 결국 React Query가 해당 쿼리를 다시 실행하도록 만드는 것으로 이해할 수 있습니다. 이것은 참조 무결성(referential integrity)를 보장하기 위해 사용됩니다 - 예를 들어, 하나의 엔티티가 변경되면 그것을 참조하는 다른 모든 엔티티도 최신 상태로 갱신되어야 합니다. 예를 들어, 사용자 정보를 가져오는 쿼리가 있고, 사용자 정보를 변경하는 별도의 작업이 있다고 가정해보겠습니다. 사용자 정보가 변경된 후, 우리는 'invalidateQueries' 메소드를 사용하여 사용자 정보 쿼리를 무효화 할 수 있습니다. 그러면 React Query 라이브러리는 자동으로 해당 쿼리를 재실행하여 최신 데이터로 업데이트하게 됩니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!