useQuery 리페치 관련

const res = useQuery(('persons'), () => axios.get('http://localhost:8080/persons'), {
    staleTime: 5000, // 5초
	refetchOnWindowFocus: false, // 윈도우가 다른 곳을 갔다가 다시 화면으로 돌아오면 이 함수를 재실행
    retry: 0, // 실패시 재호출 몇번 할지
    onSuccess: data => {
      // 성공시 호출
      console.log(data);
    },
    onError: e => {
      // 실패시 호출 (401, 404 같은 error가 아니라 정말 api 호출이 실패한 경우만 호출됩니다.)
      // 강제로 에러 발생시키려면 api단에서 throw Error 날립니다.
      console.log(e.message);
    }
    
});

//staleTime: 오래된 데이터로 인식
//cacheTime: 안쓰면, 캐시 가비지 콜렉터가 삭제
//둘다 refetch가 된다.

const { data: todoList, error, isFetching } = useQuery("todos", fetchTodoList);
const { data: nextTodo, error, isFetching } = useQuery(
  "nextTodos",
  fetchNextTodoList,
  {
    enabled: !!todoList // true가 되면 fetchNextTodoList를 실행한다
  }
);

// useQueries 여러개의 useQuery
const result = useQueries((
  {
    queryKey: ("getRune", riot.version),
    queryFn: () => api.getRunInfo(riot.version)
  },
  {
    queryKey: ("getSpell", riot.version),
    queryFn: () => api.getSpellInfo(riot.version)
  }
));

useEffect(() => {
  console.log(result); // ({rune 정보, data: (), isSucces: true ...}, {spell 정보, data: (), isSucces: true ...})
  const loadingFinishAll = result.some(result => result.isLoading);
  console.log(loadingFinishAll); // loadingFinishAll이 false이면 최종 완료
}, (result));