React Query - isPending vs isFetching
React Query에서 isPending
과 isFetching
의 차이점을 알아보고, 각각 어떤 상황에서 사용하면 좋은지 살펴보겠습니다.
isPending
- 초기 로딩 상태를 나타냄
- 캐시된 데이터가 전혀 없을 때
true
- 첫 번째 데이터 페치가 진행 중일 때 사용
queryKey: ['todos'],
queryFn: fetchTodos
});
if (isPending) {
return <div>Loading...</div>;
}
isFetching
- 모든 로딩 상태를 나타냄
- 백그라운드 리페칭 포함
- 캐시된 데이터가 있더라도 새로운 데이터를 가져오는 중이면
true
queryKey: ['todos'],
queryFn: fetchTodos
});
{isFetching && <div>데이터 업데이트 중...</div>}
## 뮤테이션의 경우
뮤테이션에서는 `isPending`을 사용하는 것이 더 적절합니다:
``` export const useArticleMutations = ({
token,
queryKey,
}: UseArticleMutationsProps) => {
if (token) {
const favoriteArticle = useMutation({...});
const unfavoriteArticle = useMutation({...});
return {
favoriteArticle,
unfavoriteArticle,
isPending: favoriteArticle.isPending || unfavoriteArticle.isPending
};
}
};
이유:
- 뮤테이션은 캐시 개념이 없음
- 항상 새로운 요청을 보내는 작업
- 백그라운드 리페칭 같은 개념이 없음
'개발 > 기록' 카테고리의 다른 글
React 애플리케이션의 에러 처리 전략: ErrorBoundary vs ErrorPage (0) | 2024.11.23 |
---|---|
null과 undefined 차이 (2) | 2024.11.21 |
reactquery query key undefined 제거하기 (0) | 2024.11.10 |
react router의 loader를 사용할 때의 장점 (0) | 2024.11.10 |
Zustand 상태 구독 여부에 따른 렌더링 차이 (0) | 2024.10.28 |