728x90
Redux Toolkit 공식 문서에 따르면, RTK Query는 강력한 데이터 패칭(fetching)과 캐싱(caching) 도구이다.
나 역시 약 3개월간 RTK Query를 사용하면서 직접 느낀 장점들이 있었다.
RTK Query 장점
- API로부터 호출된 데이터가 자동으로 캐싱된다.
일반적으로 조건이 변경될 때마다 API를 재호출해야 하지만,
RTK Query는 이전 조건으로 돌아가면캐싱된 결과
를 그대로 활용해 API 재요청을 줄여준다. - API 응답 상태 관리를 자동화한다.
Redux-thunk에서는loading
상태를 직접 설정해야 했다.
하지만 RTK Query는isLoading
,status
등의 프로퍼티를 기본 제공해 상태 관리가 간단하다.
const { data, error, isLoading } = useGetUserInfo('12345');
Queries
데이터를 조회(SELECT)할 때 사용하는 훅이다.
쿼리의 endpoint에는 providesTags
를 설정할 수 있으며,
이를 통해 캐시 무효화와 자동 리패칭을 관리할 수 있다.
쿼리 훅의 인자
queryArg
: API 호출에 필요한 파라미터queryOptions
: 쿼리 동작 방식 설정 옵션
쿼리 훅 옵션 예시
skip
(default: false): 쿼리 호출을 건너뛸지 여부pollingInterval
(default: 0): 밀리초 단위로 재요청selectFromResult
: 응답값 중 필요한 데이터만 필터링refetchOnMountOrArgChange
(default: false): 마운트 시마다 쿼리 리패칭- 숫자로 설정 시, 마지막 성공 응답과의 시간 차를 계산하여 리패칭
refetchOnFocus
(default: false): 브라우저 포커스 시 리패칭refetchOnReconnect
(default: false): 네트워크 재연결 시 리패칭
쿼리 예제
const { data, error, isLoading } = useGetUserInfo({
id: 'testUser'
}, {
skip: false,
pollingInterval: 3000
});
Mutations
POST
, PUT
, DELETE
등 데이터 변경이 필요한 경우 사용한다.
Mutation은 데이터 변경과 동시에 invalidateTags
를 통해 관련된 캐시를 무효화하고, 리스트 API를 다시 불러오게 해준다.
Mutation에서 제공하는 상태 프로퍼티
data
: 가장 최근의 응답 데이터error
: 에러 객체isUninitialized
: 아직 요청을 보내지 않은 상태isLoading
: 요청 중인 상태isSuccess
: 요청이 성공했을 때isError
: 요청이 실패했을 때reset
: 응답 캐시를 초기화하고 상태를 리셋
요약
종류 | 주 용도 |
---|---|
Queries | 데이터 조회 시 사용 (SELECT) |
Mutations | 데이터 추가, 수정, 삭제 시 사용 (UPDATE, DELETE) |
providesTags
와 invalidateTags
를 통해 자동 캐시 무효화 및 리패칭이 가능하므로, UI와 상태 관리가 훨씬 간편해진다.
728x90
반응형
'REACT' 카테고리의 다른 글
BFF(Backend For Frontend)? (0) | 2024.02.14 |
---|---|
Zustand란? (0) | 2024.02.05 |
React로 Intersection Observer 없이 Viewport 감지 구현하기 (0) | 2022.09.20 |
JSX에서 줄바꿈이 안되는 이유와 해결법 (0) | 2022.08.04 |
이미지 비교 슬라이더 구현 (Before / After) (0) | 2022.08.02 |