[React] 리액트 쿼리(React Query) staleTime을 설정하는 3가지 방법
반응형
React Query에서 staleTime
은 쿼리의 만료 시간을 설정할 때 사용한다. staleTime
이 지나면 쿼리의 캐시 데이터를 오래된 데이터로 간주하고 re-fetching을 시도한다. React Query에선 기본적으로 캐시 데이터 자체를 stale 데이터로 취급하기 때문에 staleTime의 기본값은 0이다. 하지만 변경 주기가 느린 데이터는 서버에 빈번하게 요청할 필요가 없기 때문에 staleTime
을 적절하게 조절해주는 작업이 필요하다.
💡 중복 호출을 줄이기 위한 staleTime
은 최소 20초 정도가 적당하다 — via tkdodo
1. 개별 쿼리 인스턴스에 staleTime 설정
// v4
useQuery('users', getUsers, { staleTime: 1000 * 60 });
// v5
useQuery({ queryKey: 'users', queryFn: getUsers, staleTime: 1000 * 60 });
2. 특정 쿼리키에 대한 staleTime 설정
queryClient.setQueryDefaults 메서드를 이용해 특정 쿼리키에만 적용하는 staleTime
을 설정할 수 있다.
const queryClient = useQueryClient();
queryClient.setQueryDefaults('users', { staleTime: 1000 * 60 });
// users 쿼리키에 대해 staleTime을 1분으로 설정
3. 전역 staleTime 설정
QueryClient의 defaultOptions을 통해 해당 queryClient
를 사용하는 모든 쿼리의 기본값을 설정할 수 있다.
// 방법 1
const queryClient = new QueryClient({
defaultOptions: { queries: { staleTime: 1000 * 60 } },
// 모든 쿼리 인스턴스의 staleTime을 1분으로 설정
});
// 방법 2 (이전 defaultOptions를 덮어씀)
const queryClient = useQueryClient();
queryClient.setDefaultOptions({ queries: { staleTime: 1000 * 60 } });
반응형
'🪄 Programming' 카테고리의 다른 글
[JS] 왜 JSX 안에선 if 문을 사용할 수 없을까? 표현식과 문 차이점 (0) | 2024.05.12 |
---|---|
[TS] useQuery, useMutation의 제네릭 타입 살펴보기 / Base Query 훅 만들기 (0) | 2024.05.12 |
[Git] 병합(Merge) 충돌 방지를 위한 리베이스 Rebase (1) | 2024.05.12 |
[React] svg 파일 → 리액트 컴포넌트 변환하기 - React SVGR (0) | 2024.05.12 |
[React] 리액트 Context API 렌더링 최적화하기 (0) | 2024.05.11 |
댓글
이 글 공유하기
다른 글
-
[JS] 왜 JSX 안에선 if 문을 사용할 수 없을까? 표현식과 문 차이점
[JS] 왜 JSX 안에선 if 문을 사용할 수 없을까? 표현식과 문 차이점
2024.05.12 -
[TS] useQuery, useMutation의 제네릭 타입 살펴보기 / Base Query 훅 만들기
[TS] useQuery, useMutation의 제네릭 타입 살펴보기 / Base Query 훅 만들기
2024.05.12 -
[Git] 병합(Merge) 충돌 방지를 위한 리베이스 Rebase
[Git] 병합(Merge) 충돌 방지를 위한 리베이스 Rebase
2024.05.12 -
[React] svg 파일 → 리액트 컴포넌트 변환하기 - React SVGR
[React] svg 파일 → 리액트 컴포넌트 변환하기 - React SVGR
2024.05.12