useQuery()
, useInfiniteQuery()
로 생성된 쿼리 인스턴스는 기본적으로 캐시된 데이터를 stale(오래된)한 것으로 간주
staleTime
옵션을 사용하여 쿼리를 구성할 수 있다.stale
한 상태의 쿼리는 다음과 같은 경우 백그라운드에서 refetch
됨
refocused
)refetch interval
을 설정하였을 경우useQuery()
, useInfiniteQuery()
의 active
인스턴스가 없는 경우, 쿼리는 inactive
상태가 되고 나중에 다시 사용될 경우를 대비하여 캐시에 남아 있음 → gcTime
관여
inactive
상태의 쿼리는 5분 후에 가비지로 수집됨 → gcTime
의 기본값이 5분staleTime
fresh
상태에서 stale
상태로 전환될 때까지의 기간fresh
상태일 경우, 데이터는 항상 캐시에서만 읽혀지며 네트워크 요청은 발생하지 않음stale
상태일 경우(기본값은 즉시), 캐시에서 데이터를 가져오지만 특정 조건(stale
한 상태의 쿼리는 다음과 같은 경우 백그라운드에서 refetch
됨 )에서는 백그라운드에서 refetch
가 발생gcTime
inactive
상태의 쿼리가 캐시에서 제거될 때까지의 기간(기본값 5분)inactive
상태로 전환됨<aside>
<img src="/icons/chat_gray.svg" alt="/icons/chat_gray.svg" width="40px" /> 대부분의 경우, staleTime
변경으로 충분하다. - tkdodo
</aside>