React Query 내부 구조 분석: useQuery 훅과 컴포넌트 리렌더링 원리
·2023.07.20 09:00
핵심 내용
QueryClient, QueryCache, QueryObserver의 상호작용과 useSyncExternalStore를 활용한 서버 상태 변경 시 컴포넌트 리렌더링 메커니즘을 분석한다.
1 / 3
자세히 보기
React Query의 핵심 아키텍처
React Query(@tanstack/react-query 4.29.19)는 서버 상태 관리를 위해 QueryClient, QueryCache, Query, QueryObserver 등의 클래스로 구성된다. QueryCache는 queryKey를 해시하여 Query 인스턴스를 관리하며, 동일한 키의 유효한 쿼리가 존재할 경우 중복 네트워크 요청을 방지한다.
상태 변경과 리렌더링 메커니즘
컴포넌트가 useQuery를 호출하면 내부적으로 QueryObserver 인스턴스가 생성되어 컴포넌트와 연결된다. 이 Observer는 React의 useSyncExternalStore 훅을 사용하여 외부 스토어 구독 패턴을 구현한다. 서버 데이터 변경으로 Query의 상태가 업데이트되면 dispatch 메서드가 실행되어 연결된 모든 QueryObserver의 onQueryUpdate를 호출한다. Observer는 상태 변경을 검증한 후 notify 메서드를 통해 저장된 리스너(onStoreChange)를 실행함으로써 React 컴포넌트의 리렌더링을 유도한다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.