🔥 백그라운드 가져오기 인디케이터

271자
4분

쿼리의 상태가 'pending'일 때 초기 로딩 상태를 표시하는 것만으로도 충분할 수 있습니다. 하지만 때로는 쿼리가 백그라운드에서 다시 가져오고 있다는 추가 인디케이터를 표시하고 싶을 수 있습니다. 이를 위해 쿼리는 'isFetching'이라는 불리언 값을 제공합니다. 이 값을 사용하면 상태 변수와 관계없이 가져오기 상태에 있음을 나타낼 수 있습니다.

다음은 이를 활용한 예제 코드입니다:

typescript
function Todos() {
  const {
    status,
    data: todos,
    error,
    isFetching,
  } = useQuery({
    queryKey: ['todos'],
    queryFn: fetchTodos,
  })
 
  if (status === 'pending') {
    return <span>불러오는 ...</span>
  }
 
  if (status === 'error') {
    return <span>오류: {error.message}</span>
  }
 
  return (
    <>
      {isFetching && <div>새로 고치는 ...</div>}
 
      <div>
        {todos.map((todo) => (
          <Todo todo={todo} />
        ))}
      </div>
    </>
  )
}
 
typescript
function Todos() {
  const {
    status,
    data: todos,
    error,
    isFetching,
  } = useQuery({
    queryKey: ['todos'],
    queryFn: fetchTodos,
  })
 
  if (status === 'pending') {
    return <span>불러오는 중...</span>
  }
 
  if (status === 'error') {
    return <span>오류: {error.message}</span>
  }
 
  return (
    <>
      {isFetching && <div>새로 고치는 ...</div>}
 
      <div>
        {todos.map((todo) => (
          <Todo todo={todo} />
        ))}
      </div>
    </>
  )
}
 

이 코드에서 우리는 쿼리의 상태에 따라 다른 내용을 표시합니다. 'pending' 상태일 때는 로딩 메시지를, 'error' 상태일 때는 오류 메시지를 보여줍니다. 그리고 데이터를 성공적으로 가져왔을 때는 할 일 목록을 표시하면서, 'isFetching' 값이 true일 경우 새로 고치는 중이라는 메시지도 함께 보여줍니다.

전역 백그라운드 가져오기 로딩 상태 표시하기

개별 쿼리의 로딩 상태 외에도, 백그라운드에서 실행 중인 쿼리를 포함해 어떤 쿼리라도 가져오기 중일 때 전역 로딩 인디케이터를 표시하고 싶을 수 있습니다. 이럴 때 'useIsFetching' 훅을 사용할 수 있습니다.

다음은 이를 활용한 예제 코드입니다:

typescript
import { useIsFetching } from '@tanstack/react-query'
 
function GlobalLoadingIndicator() {
  const isFetching = useIsFetching()
 
  if (isFetching) {
    return <div>쿼리가 백그라운드에서 가져오는 중입니다...</div>
  }
 
  return null
}
 
typescript
import { useIsFetching } from '@tanstack/react-query'
 
function GlobalLoadingIndicator() {
  const isFetching = useIsFetching()
 
  if (isFetching) {
    return <div>쿼리가 백그라운드에서 가져오는 중입니다...</div>
  }
 
  return null
}
 

이 코드에서 'useIsFetching' 훅은 현재 실행 중인 쿼리의 수를 반환합니다. 이 값이 0보다 크면 하나 이상의 쿼리가 실행 중임을 의미하므로, 이때 로딩 메시지를 표시합니다. 이를 통해 애플리케이션 전체에서 데이터 가져오기 작업이 진행 중임을 사용자에게 알릴 수 있습니다.

이러한 방식으로 백그라운드 가져오기 인디케이터를 구현하면, 사용자에게 더 나은 피드백을 제공하고 애플리케이션의 상태를 더 명확히 전달할 수 있습니다.

YouTube 영상

채널 보기
AI를 위한 선형대수, 데이터는 점구름이다
AI에서 고차원 임베딩이 무엇일까?
3편, B-Tree 탐색 프로세스: 수백 개의 갈림길에서 데이터를 찾는 법
숫자 하나가 AI 모델의 운명을 바꾼다? | 선형대수학
AI를 위한 선형대수 - 전단, 행렬식, 변환의 핵심
11편, 왜 DB마다 성능이 다를까? 엔진별 B-Tree 저장 방식 비교
AI는 왜 수백 차원의 벡터를 사용할까? 고차원 공간과 행렬 | 선형대수학
BTree 노드의 구조는?