React Query Promise.all, useQueries

2023. 9. 15. 22:28·React

useQueries는 React Query 라이브러리에서 여러 개의 쿼리를 동시에 병렬로 실행할 수 있게 해주는 훅입니다. useQuery는 단일 쿼리를 위한 것이고, useQueries는 여러 개의 useQuery를 한 번에 처리하는 데 사용됩니다.

 

Promise.all 과 같은 역활을 하는 useQueries 

 

사용 예시

const results = useQueries({
  queries: userIds.map(id => ({
    queryKey: ['user', id],
    queryFn: () => fetchUser(id),
  }))
})

results.forEach(result => {
  if (result.isLoading) {
    console.log('Loading...')
  } else {
    console.log(result.data)
  }
})

 

- userIds 가 [1, 2, 3]이면 fetchUser(1), fetchUser(2), fetchUser(3) 병렬로 호출합니다. 

- results에 결과값이 차례로 들어옵니다. 

 

사용하는 경우 

- 여러개의 독립적인 API를 동시에 불러와야할 때 

- 반복적인 데이터(유저리스트, 상품리스트)를 ID별로 병렬 호출할 때 

 

Promise.all 과 useQueries의 차이

Promise.all은 순서를 보장하지 않지만, useQueries는 순서를 보장한다는 것 입니다. 

const results = useQueries({
  queries: [
    {
      queryKey: ['user', 1],
      queryFn: () => fetchUser(1),
    },
    {
      queryKey: ['user', 2],
      queryFn: () => fetchUser(2),
    },
  ],
})

// results[0]은 fetchUser(1)의 결과
// results[1]은 fetchUser(2)의 결과

 

설령 네트워크 응답 순서가 뒤죽박죽이어도,

useQueries는 내부적으로 순서를 정렬하지 않고 입력한 순서 그대로 결과를 배열에 담아 반환합니다.

 

'React' 카테고리의 다른 글

react tailwind setting, config  (0) 2023.10.29
getInitialProps로 header정보 넘기기  (0) 2023.10.26
react 프로젝트에서 import순서 정렬  (0) 2023.09.08
react-hook-form validate with zod  (0) 2023.08.17
리액트 오류: React DOMException: Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node  (0) 2023.08.05
'React' 카테고리의 다른 글
  • react tailwind setting, config
  • getInitialProps로 header정보 넘기기
  • react 프로젝트에서 import순서 정렬
  • react-hook-form validate with zod
ssund
ssund
  • ssund
    ssund의 기술블로그
    ssund
  • 전체
    오늘
    어제
    • TECH (82)
      • Next.js (8)
      • React (25)
      • Vite (1)
      • javascript (17)
      • CSS (6)
      • CS (10)
      • AWS (0)
      • Jest (1)
      • CI|CD (0)
      • 알고리즘 (8)
      • Tools (1)
      • Tips (5)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      TypeScript
      함수와 메서드차이
      nextjs
      reat-head
      app-router
      JavaScript
      global-style
      React
      Array.sort()
      git배포
      styled-components
      서버컴포넌트
      react state management
      웹브라우저구성
      타입스크립트
      커머스프로젝트
      배열요소순서
      call signatures
      theme-provider
      redux
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.0
    ssund
    React Query Promise.all, useQueries
    상단으로

    티스토리툴바