개발자

리액트쿼리 질문입니다

2023년 05월 23일조회 119

리액트쿼리를 많이사용해본 분들께 질문드리고싶어요. 주변에 토이 프로젝트 하는분들 보면 뮤테이션을 사용할때, 보통 onSuccess로 invalidateQuries하거나 refetch로 다시 가져오더라고요. 그런데 응답값으로 새로운 값을 주고있다면, 그걸 setQueryData로 캐시 업데이트하면 되는것 아닌가요? 특정 뮤테이션 결과에 따라 연관있는 여러api를 다시 불러와서 업데이트해야한다면 그만큼 api들을 전부 다시호출하는데요. 캐시업데이트보단 그냥 다 무효화 하는분들이 많던데 그냥 그게 편해서 그런건가요? 예를들어 게시물 하나를 수정하면, 게시글목록 다시불러오고, 개별 게시글 다시불러오고 하는데요. 백엔드에서 생성된게시글을 리턴값으로 준다면, 그걸로 개별 게시글은 캐시업데이트해주는게 낫지않나요?

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 1

강동희님의 프로필 사진

말씀하신대로 mutation의 응답 값으로 쿼리 데이터가 내려온다면 setQueryData 로 캐싱된 데이터를 변경해준다면 api콜을 한번이라도 줄일 수 있겠습니다. invalidateQueries 는 그렇지 않은 상황에서 사용하거나, 쿼리의 상태가 변경되어야 하는데 집중해야 하는 상황에서 사용합니다. 아래 남긴 공식문서에서는 setQueryData 와 fetchQuery 에 대한 비교가 남겨있습니다. https://tanstack.com/query/v4/docs/react/reference/QueryClient#queryclientsetquerydata

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!