1. invalidateQueries 호출 시 데이터 손실 위험
클라이언트 상태를 Query의 캐시에 저장하면, 캐시 무효화(invalidate) 시 의도치 않게 상태가 사라질 수 있습니다.
2. 데이터 영구 저장 불가
React Query는 데이터를 메모리 또는 브라우저의 짧은 생명주기 내에서 유지하기 때문에, 영구적으로 유지해야 하는 상태(예: 로컬 스토리지와 연동된 데이터)를 처리하기 어렵습니다.
3. 비동기 중심 설계
React Query를 클라이언트 상태에 적용하면 불필요하게 queryFn과 같은 비동기 인터페이스를 거쳐야 하며, 단순한 로직이 복잡해질 수 있습니다.
4. 리렌더링 최적화 부족
React Query는 상태 관리 도구(Zustand, Redux 등)처럼 상태 구독을 세분화하여 필요한 부분만 리렌더링하지 않습니다.
- 클라이언트 상태 관리에서는 특정 상태가 변경되더라도 관련된 컴포넌트만 업데이트되도록 최적화해야 합니다.
- React Query를 사용하면 상태 변경이 불필요한 리렌더링을 초래할 가능성이 높습니다.
5. 개발 및 유지보수의 복잡성 증가
React Query는 서버 상태 관리에 특화된 규칙과 패턴이 있습니다. 이를 클라이언트 상태 관리에 적용하면 다음과 같은 문제가 발생할 수 있습니다:
- 역할 혼동: 서버 상태와 클라이언트 상태의 경계가 모호해져 유지보수가 어려워집니다.
- 가독성 저하: 클라이언트 상태 관리를 위해 queryClient나 setQueryData를 사용하는 코드는 직관적이지 않아 이해하기 어렵습니다.
댓글