๐Ÿ•ต๐Ÿป Tanstack Query (2)

๋ฐ•์›๋นˆยท2024๋…„ 8์›” 1์ผ

๋ฆฌ์•กํŠธ โš™๏ธ

๋ชฉ๋ก ๋ณด๊ธฐ
14/14

Tanstack Query์˜ ๊ธฐ๋ณธ๊ฐ’

Tanstack Query๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๊ฐ„ํ˜น๊ฐ€๋‹ค ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๊ธฐ๋ณธ๊ฐ’์„ ์•Œ์ง€ ๋ชปํ•œ๋‹ค๋ฉด
ํ•™์Šต์ด๋‚˜ ๋””๋ฒ„๊น…์— ์–ด๋ ค์›€์„ ์ค„ ์ˆ˜๋„ ์žˆ์–ด ๊ผญ ์•Œ์•„๋‘์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.


๊ธฐ๋ณธ์ ์œผ๋กœ useQuery, useInfiniteQuery๋ฅผ ํ†ตํ•œ ์ฟผ๋ฆฌ ์ธ์Šคํ„ด์Šค๋Š” ์บ์‹œ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๋กœ ๊ฐ„์ฃผํ•ฉ๋‹ˆ๋‹ค.

  • ์œ„ ๋™์ž‘์„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด staleTime ์˜ต์…˜์„ ์‚ฌ์šฉํ•ด ์ „์—ญ์ ์œผ๋กœ, ํ˜น์€ ์ฟผ๋ฆฌ๋ณ„๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    ๋” ๊ธด staleTime์„ ์ง€์ •ํ•˜๋ฉด ์ฟผ๋ฆฌ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ž์ฃผ ๋‹ค์‹œ ๊ฐ€์ ธ์˜ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์ž๋™์œผ๋กœ ๋‹ค์‹œ fetchํ•ฉ๋‹ˆ๋‹ค.

  • ์ฟผ๋ฆฌ ๋งˆ์šดํŠธ์˜ ์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค (์ฒ˜์Œ์œผ๋กœ ์ฟผ๋ฆฌ๋˜๋Š” ๊ฒฝ์šฐ)
  • ํ•ด๋‹น ์›นํŽ˜์ด์ง€์— ๋‹ค์‹œ ํฌ์ปค์Šค ํ•  ๊ฒฝ์šฐ
  • ๋„คํŠธ์›Œํฌ๊ฐ€ ๋‹ค์‹œ ์—ฐ๊ฒฐ๋˜์—ˆ์„ ๊ฒฝ์šฐ
  • ์„ ํƒ์ ์œผ๋กœ refetch ๊ฐ„๊ฒฉ์„ ์„ค์ •ํ•ด๋‘์—ˆ์„ ๊ฒฝ์šฐ
  • ์œ„ ๋™์ž‘๋“ค์„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด refetchOnMount, refetchOnWindowFocus, refetchOnReconnect ๋ฐ refetchInterval ๊ณผ ๊ฐ™์€ ์˜ต์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

useQuery, useInfiniteQuery ๋˜๋Š” ์ฟผ๋ฆฌ ์˜ต์ €๋ฒ„์˜ ํ™œ์„ฑ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋” ์ด์ƒ ์—†๋Š” ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋Š” ๋น„ํ™œ์„ฑ์œผ๋กœ ํ‘œ์‹œ๋˜๊ณ  ๋‚˜์ค‘์— ๋‹ค์‹œ ์‚ฌ์šฉ๋  ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•ด ์บ์‹œ์— ๋‚จ์•„์žˆ์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ, ๊ธฐ๋ณธ์ ์œผ๋กœ ๋น„ํ™œ์„ฑ ์ฟผ๋ฆฌ๋Š” 5๋ถ„ ํ›„์— ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ์ˆ˜์ง‘ํ•ฉ๋‹ˆ๋‹ค.

  • ์œ„ ๋™์ž‘์„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ์ฟผ๋ฆฌ์˜ ๊ธฐ๋ณธ gcTime์„ 1000 * 60 * 5 ๋ฐ€๋ฆฌ์ดˆ๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค์ง€ ๋ชปํ•œ, ์ฆ‰ ์‹คํŒจํ•œ ์ฟผ๋ฆฌ๋Š” ์ง€์ˆ˜์  ๋ฐฑ์˜คํ”„ ์ง€์—ฐ ์‹œ๊ฐ„์„ ๋‘๊ณ  3๋ฒˆ ์ž๋™์œผ๋กœ ์žฌ์‹œ๋„ํ•œ ํ›„ ์˜ค๋ฅ˜๋ฅผ ์บก์ฒ˜ํ•˜์—ฌ UI์— ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

  • ์œ„ ๋™์ž‘์„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ์ฟผ๋ฆฌ์˜ ๊ธฐ๋ณธ ์žฌ์‹œ๋„ ๋ฐ ์žฌ์‹œ๋„ ์ง€์—ฐ ์˜ต์…˜์„ 3 ์ด์™ธ์˜ ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ ,
    ๊ธฐ๋ณธ ์ง€์ˆ˜ ๋ฐฑ์˜คํ”„ ํ•จ์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์‹ค์ œ๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€ ๊ฐ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๊ตฌ์กฐ์ ์œผ๋กœ ๊ณต์œ ๋˜๊ณ  , ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ useMemo ๋ฐ useCallback๊ณผ ๊ด€๋ จํ•˜์—ฌ ๊ฐ’ ์•ˆ์ •ํ™”์— ๋” ๋„์›€์ด ๋˜๋„๋ก ๋ฐ์ดํ„ฐ ์ฐธ์กฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 99.9%์˜ ๊ฒฝ์šฐ ์ด๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ ์•ฑ์˜ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋˜๊ณ  ๋น„์šฉ์€ ์ „ํ˜€ ๋“ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.


0๊ฐœ์˜ ๋Œ“๊ธ€