useQuery는 첫 호출할 때 한번만 api를 call 한다.
만약 api를
query.refetch
를 사용한다.queryKey
를 바꿔주면된다.꼼수로 queryKey로 넘기는 값을 state로 관리하여, state를 바꾸면서 재호출시킬 수 있다.
별도의 customHook으로 구현해볼 수도 있다.
export function useLazyQuery(
initalParams?: ApiParams,
) {
const [params, setParams] =
useState<ApiParams | undefined>(initalParams);
const queryClient = useQueryClient();
const query = useQuery(['test-refetch', params], () => api({ params }));
const fetch = (newParams: ApiParams) => {
setParams(newParams);
};
return { query, fetch };
}