ํ”„๋กœ์ ํŠธ

[react-query] useQueries๋กœ ๊ฐ id์— ๋Œ€ํ•ด ๋ณ‘๋ ฌ ์ฟผ๋ฆฌํ•˜๊ธฐ

Yuuuki 2024. 4. 23. 14:36

 

์ข‹์•„์š”ํ•œ ์ƒํ’ˆ๋“ค์„ ํ”„๋ก ํŠธ๋‹จ์—์„œ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด, zustand ์Šคํ† ์–ด์— productId๋ฅผ ๋ฐฐ์—ด๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ๋‹ค.

 

๋งˆ์ดํŽ˜์ด์ง€์—์„œ, ์ข‹์•„์š”ํ•œ ์ƒํ’ˆ productList๋“ค์„ ์œ„ํ•ด์„œ, zustand์—์„œ ๊ด€๋ฆฌํ•˜๊ณ ์žˆ๋Š” productId๋“ค์˜ ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉด์„œ, ํ•ด๋‹น productId๋กœ getProduct ์ฟผ๋ฆฌ๋ฌธ์„ ์ˆ˜ํ–‰ํ•ด์•ผํ•œ๋‹ค.

 

 

useQueries

์—ฌ๋Ÿฌ๊ฐœ์˜ ๋น„๋™๊ธฐ ์ฟผ๋ฆฌ๋ฅผ ๋™์‹œ์— ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํ›…์œผ๋กœ, ๊ฐ๊ฐ์˜ ์ฟผ๋ฆฌ๋ฅผ ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ ๋ฐ›์•„ ๊ฐ ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋˜ํ•œ ๊ฐ ์ฟผ๋ฆฌ์˜ ๋กœ๋”ฉ ์ƒํƒœ๋‚˜ ์—๋Ÿฌ์ƒํƒœ ๋“ฑ์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.  ๋™์  ๋ณ‘๋ ฌ ์ฟผ๋ฆฌ ์ž‘์—…์„ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๊ธฐ์—, ์ฃผ๋กœ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋น„๋™๊ธฐ ์ฟผ๋ฆฌ๋ฅผ ๋™์‹œ์— ์‹คํ–‰ํ•ด์•ผ ํ•  ๋•Œ ์ ํ•ฉํ•˜๋‹ค.

 

const results = useQueries({
  queries: [
    { queryKey: ['post', 1], queryFn: fetchPost, staleTime: Infinity },
    { queryKey: ['post', 2], queryFn: fetchPost, staleTime: Infinity },
  ],
})

https://tanstack.com/query/v4/docs/framework/react/reference/useQueries

 

TanStack Query Docs

The useQueries hook accepts an options object with a queries key whose value is an array with query option objects identical to the useQuery hook (excluding the context option). Having the same query key more than once in the array of query objects may cau

tanstack.com

 

 

 

import api from "@/apis";
import { useQueries } from "@tanstack/react-query";

export default function useQueryGetLikedProducts(productIds: number[]) {
  return useQueries({
    queries: productIds.map((productId) => ({
      queryKey: ["product", { productId }],
      queryFn: () => api.products.getProduct(productId),
      enabled: !!productId,
    })),
  });
}

 

likedProducts ๋ฐฐ์—ด์˜ ๊ฐ productId์— ๋Œ€ํ•ด ๊ฐœ๋ณ„ ์ฟผ๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค!

 

 

 

 

 

 

https://velog.io/@jhjung3/React-Query%EC%9D%98-useQueries-%ED%99%9C%EC%9A%A9%ED%95%98%EA%B8%B0-79d6b6k1

 

React Query์˜ useQueries ํ™œ์šฉํ•˜๊ธฐ

๋ฆฌ์•กํŠธ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ, ๋‹จ๊ฑด์˜ API ์š”์ฒญ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ useQuery ํ›…์„ ํ†ตํ•ด ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์˜ต์…˜๋“ค๊ณผ ์ฟผ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋งŒ์•ฝ ๋ณ‘๋ ฌ์ ์ธ ๋‹ค๊ฑด์˜ API ์š”์ฒญ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๋Š” ์–ด๋–ค ํ›…์„ ์‚ฌ์šฉ

velog.io