계속 헷갈리는 staleTime과 cacheTime을 정리하는 포스팅
fresh
)로 남아있는 시간을 뜻함 ( fresh
→ stale
되는 시간(ms))default
값은 0
이며, ms단위로 시간을 지정할 수 있음fresh
한 데이터일 때는 쿼리 인스턴스가 새롭게 mount
되어도 네트워크 fetch
가 일어나지 않는다. ( API 호출 없이 캐싱된 데이터가 다시 사용됨 )stale
한 데이터 일때는 focus
, mount
, 네트워크가 다시 연결
되었을 때 등 신선한 데이터를 다시 fetch
해온다.inactive
상태일 때 캐싱된 상태로 남아있는 시간default
값은 300000
(ms)이며, 5분이다unmount
되면 데이터는 inactive
상태로 변경되며, 캐시는 cacehTime
만큼 유지cacheTime
이 지나면 가비지 콜렉터
로 수집된다inactive
된 데이터는 캐시에서 삭제staleTime
이 시작inactive
상태가 되면 cacheTime
이 시작staleTime
이 끝나면 stale
상태를 가지고 있지만 cacheTime
이 시작되지는 않는다. ( 화면에 아직 유효한 데이터가 존재하기 때문에 cacheTime
이 흐르지 않음 )inactive
가 되면 cacheTime
시작. 이때 cacheTime
이 유효하기 때문에 다시 호출하면 캐싱된 데이터를 재사용할 수 있다