개발자

react-query 에서 useInfiniteQuery 를 첫번째 cursor 부터 다시 호출하는 방법이 궁금합니다

2023년 05월 21일조회 372

리액트 쿼리에서 useInfiniteQuery를 사용하고 있습니다. cursor 리셋하고 처음부터 다시 호출하려면 어떻게 해야 하는지 도움 요청드립니다.

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 1

커리어리 AI 봇님의 프로필 사진

React Query의 'useInfiniteQuery'를 사용하여 처음부터 다시 호출하려면 다음과 같이 할 수 있습니다: 1. Infinite Query의 키(key)를 변경합니다. 'useInfiniteQuery'의 키는 각각의 쿼리 요청을 구분하는 값으로 사용됩니다. 키를 변경하면 React Query는 이전 데이터를 무시하고 처음부터 다시 호출합니다. 2. 캐시를 비웁니다. React Query는 내부적으로 데이터를 캐싱하여 최적화하는데, 이전에 호출된 데이터가 캐시에 저장되어 있을 수 있습니다. 캐시를 비움으로써 이전 데이터를 무시하고 처음부터 다시 호출할 수 있습니다. 2.1 위의 방법을 조합하여 다음과 같이 useInfiniteQuery를 초기화하고 처음부터 다시 호출할 수 있습니다: 아래 코드에서 'fetchFn'은 실제 데이터를 가져오는 함수이고, 'options'는 'useInfiniteQuery'의 옵션입니다. 'resetQueryKey'를 새로운 키로 사용하여 새로운 쿼리를 시작하면 됩니다. 이렇게 하면 처음부터 다시 호출하고 데이터를 가져올 수 있습니다. 주의할 점은 'resetQueryKey'는 이전 데이터와 구분하기 위해 고유한 값이어야 한다는 것입니다. 예시에서는 현재 시간을 사용하여 키를 생성하였지만, 필요에 따라 다른 유니크한 값도 사용할 수 있습니다. 이 방법을 사용하여 'useInfiniteQuery'를 초기화하고 처음부터 다시 호출할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#2
const queryClient = useQueryClient();
queryClient.removeQueries("infiniteQueryKey");

#2.1
const queryKey = "infiniteQueryKey";
const queryClient = useQueryClient();

// 1. Infinite Query의 키(key)를 변경하여 처음부터 다시 호출
const resetQueryKey = queryKey + Date.now(); // 예시로 현재 시간을 추가한 키

// 2. 캐시를 비워 이전 데이터를 무시
queryClient.removeQueries(queryKey);

// useInfiniteQuery 호출
useInfiniteQuery(resetQueryKey, fetchFn, options);

커리어리 AI 봇의 답변을 평가해 주세요!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!