데이터를 미리 복사해두어 백엔드에 요청할 필요없이 빠르게 가져올 수 있다.
const result = useQuery({ queryKey: ['임의 설정'], queryFn: getPosts });
console.log(result);
컴포넌트가 랜더링 되었을 때 useQuery()가 실행되는데 이때 queryKey에서 설정한 키의 이름으로 캐시에 저장된다. 이는 리액트 쿼리 개발자도구에서 확인가능
useQuery()가 실행되었을 때 이미 같은 쿼리키로 저장된 캐시가 있으면 저장된 데이터의 상태에 따라 다르게 동작한다.
기본값은 0으로 데이터를 받아오면 바로 stale 상태가 되고 매번 refetch를 하게 된다.
상황에 따라 stale time을 변경해주어야한다.
캐시에 저장된 필요없는 데이터를 삭제해 공간을 만들어줘야한다.
inactive 상태의 데이터는 가비지 컬렉션 타임(garbage collection time)이 지나면 캐시에서 삭제.
기본 시간은 5분이며 수정이 가능하다.
const result = useQuery({
queryKey: ['임의설정'],
queryFn: getPosts,
staleTime: 60 * 1000, // 1분 : 1000(1초) * 60(60초)
gcTime: 60 * 1000 * 10, // 10분 : 1000(1초) * 60(60초) * 10(10분)
});
기본적으로 stale time은 0, gc time은 5분이다.
이 값을 변경하기 위해 옵션값을 변경해주면 되는데 (위 코드 참고)
모두 밀리초가 기준이라 1000은 1초이다.