서버에서 유저정보를 prefetch 해서 dehydrate 시킨 후 client한테 보낼 시, staleTime이나 gcTime 만료로 prefetch한 데이터가 캐시에서 삭제되고 갑자기 빈화면 또는 undefined 오류를 뱉지 않을지 걱정되어 공부함. ⇒ staleTime은 말 그대로 데이터의 “stale” 여부를 나타내는 옵션으로, 중요한 것은 stale된 데이터라고 해도 캐시데이터에서 삭제되지 않음. gcTime은 garbage collector가 inactive한 캐시데이터를 삭제시키기까지의 시간인데, 컴포넌트가 mount 되어있고 캐시데이터를 렌더링하는 동안은 active 상태로 간주되기 때문에 gcTime이 만료되어도 갑자기 빈화면이 보이지 않음 + prefetchQuery에는 기본적으로 gcTime 옵션이 없음 useQuery에는 있음 ⇒ 그럼 inactive 로 간주되는 조건은? 컴포넌트가 unmount 될 때, 예를 들어 유저가 다른 페이지로 navigate를 할 때 inactive로 간주되고, gcTime이 expire되면, 해당 데이터는 캐시에서 사라짐. 그러다가 다시 이전 페이지로 돌아오면? 컴포넌트가 다시 mount 되면서 active 한 상태로 바뀌고, “기본적으로 캐시된 데이터가 없거나 만료된 경우 refetch를 하는” useQuery에 의해서 다시 데이터를 캐싱하고 렌더링 함. // 결론: prefetch를 한 데이터가 staleTime이 만료되거나 useQuery의 gcTime이 만료된다고 해서 이미 렌더링된 데이터들이 갑자기 캐시에서 사라지지 않고 + 빈화면이 되지 않는다!