2022-moragora icon indicating copy to clipboard operation
2022-moragora copied to clipboard

[FE] 비동기 상태관리 훅을 react-query로 전환

Open greenblues1190 opened this issue 2 years ago • 1 comments

요구사항

  • useQuery, useMutation, queryClient를 react-query로 전환
  • 관련 타입을 react-query가 제공하는 타입으로 전환
  • 전체 동작 테스트

기한

22.10.30

greenblues1190 avatar Oct 28 '22 05:10 greenblues1190

useQuery가 반환한 객체의 refetch와 QueryClient의 invalidateQueries 메서드 비교

refetch와 invalidateQueries 모두 쿼리를 재요청하는 메서드이다. 하지만 refetch는 실행 시 항상 재요청하는 반면, invalidateQueries는 쿼리를 stale로 마크하고 옵저버가 마운트될 때 재요청한다.

그 이유는 QueryClient가 상태 변경 시 컴포넌트를 업데이트하는 방식에 있다. react-query의 내부 구현을 살펴본 결과, 내부적으로 옵저버 패턴을 사용한다는 것을 알 수 있었다. 컴포넌트는 마운트될 때 참조한 쿼리들을 구독하며 언마운트 시 구독을 해제하는 방식으로 . 본 이슈에서도 대부분의 경우 쿼리가 참조되는 컴포넌트가 마운트되었을 때만 재요청하는 것이 효율적이기 떄문에 invalidateQueries를 사용하기로 결정했다.

greenblues1190 avatar Nov 09 '22 02:11 greenblues1190