๐ŸŽ‰ berenickt ๋ธ”๋กœ๊ทธ์— ์˜จ ๊ฑธ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ๐ŸŽ‰
Front
Tanstack Query
06-important-defaults

1. ์ค‘์š”ํ•œ ๊ธฐ๋ณธ๋“ค(Important Defaults)

Out of the box(๋ณ„๋„์˜ ์„ค์น˜๊ฐ€ ํ•„์š”์—†์ด), TanStack Query๋Š” ์ ๊ทน์ ์ด์ง€๋งŒ (์ œ๋Œ€๋กœ ๋™์ž‘๋˜๊ฒŒ) ์„ค์ •๋œ๋‹ค. ๊ฐ€๋” ์ด๋Ÿฐ ๊ธฐ๋ณธ์„ค์ •๊ฐ’๋“ค์€ ์‹ ๊ทœ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ•™์Šต/๋””๋ฒ„๊น…์„ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ ๋‹ค. TanStack Query๋ฅผ ๊ณ„์† ํ•™์Šตํ•˜๊ณ , ์‚ฌ์šฉํ•  ๋•Œ ์ด๋Ÿฌํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•œ๋‹ค:

(1) useQuery ๋˜๋Š” useInfiniteQuery๋ฅผ ํ†ตํ•œ Query instance๋Š” ์บ์‹œ๋œ ๋ฐ์ดํ„ฐ๋Š” ์˜ค๋ž˜๋œ ๊ฒƒ(stale)์œผ๋กœ ๊ฐ„์ฃผํ•œ๋‹ค.

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


(2) ์˜ค๋ž˜๋œ queries๋Š” (๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์—) ์ž๋™์ ์œผ๋กœ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ refetch ๋œ๋‹ค.

  • query mount์˜ ์ƒˆ ์ธ์Šคํ„ด์Šค
  • ์œˆ๋„์šฐ๊ฐ€ refocus ๋˜์—ˆ์„ ๋•Œ
  • netework๊ฐ€ ๋‹ค์‹œ ์—ฐ๊ฒฐ๋˜์—ˆ์„ ๋•Œ
  • ์ฟผ๋ฆฌ๊ฐ€ refetch interval ์„ค์ •๋˜์—ˆ์„ ๋•Œ

์ด ๊ธฐ๋Šฅ์„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด refetchOnMount, refetchOnWindowsFocus, refetchOnReconnect ๋ฐ refetchInterval๊ณผ ๊ฐ™์€ ์˜ต์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.


(3) ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ์ธ์Šคํ„ด์Šค์ธ useQuery, useInfiniteQuery ๋˜๋Š” query observers๋“ค์˜ Query ๊ฒฐ๊ณผ๋“ค์€ ๋น„ํ™œ์„ฑ(inactive) ๋ ˆ์ด๋ธ”๋กœ ์ง€์ •๋˜๋ฉฐ, ๋‚˜์ค‘์— ๋‹ค์‹œ ์‚ฌ์šฉ๋  ๊ฒฝ์šฐ ์บ์‹œ์— ๋‚จ์•„ ์žˆ๋‹ค.


(4) ๊ธฐ๋ณธ์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”๋œ query๋“ค์€ 5๋ถ„ ํ›„์— ๊ฐ€๋น„์ง€ ์ฝœ๋ ‰ํ„ฐ๋กœ๋ถ€ํ„ฐ ํšŒ์ˆ˜๋‹นํ•œ๋‹ค.

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


(5) ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š”๋ฐ ์‹คํŒจํ•œ query๋“ค์€ 3๋ฒˆ ์ž๋™์œผ๋กœ ์žฌ์‹œ๋„ํ•œ๋‹ค. (๋Œ€ํ‘œ์ ์ธ ๋’ท๊ฑธ์Œ์งˆ(backoff, ์—ฌ๊ธฐ์„œ๋Š” ์˜ค๋ฅ˜)์˜ delay์™€ ํ•จ๊ป˜,) (UI์— ์˜ค๋ฅ˜๋ฅผ ์ฐพ์•„์„œ ํ‘œ์‹œํ•˜๊ธฐ ์ „์—,)

์ด๋ฅผ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด, ์ฟผ๋ฆฌ์— ๋Œ€ํ•œ retry ๋ฐ retryDelay ์˜ต์…˜์„ 3๊ณผ (, ๊ธฐ๋ณธ backoff ํ•จ์ˆ˜)์ด ์•„๋‹Œ ๋‹ค๋ฅธ ํ•ญ๋ชฉ์œผ๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค.


(6) ๊ธฐ๋ณธ์ ์œผ๋กœ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋Š” ๊ตฌ์กฐ์ ์œผ๋กœ ๊ณต์œ ๋˜์–ด ์žˆ๋‹ค. (^๋งŒ์•ฝ ๋ฐ์ดํ„ฐ๊ฐ€ ์‹ค์ œ๋กœ ๋ณ€๊ฒฝ๋˜์–ด ์žˆ๋Š”์ง€ ๊ฐ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ,) (๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์„ ๊ฐ์ง€ํ•˜์ง€ ๋ชปํ•œ๋‹ค๋ฉด, ๋ฐ์ดํ„ฐ ์ฐธ์กฐ๋Š” ๋ณ€ํ™”ํ•˜์ง€ ์•Š์€์ฑ„ ์œ ์ง€๋œ๋‹ค.) (๋” ๋‚˜์€ ๊ฐ’ ์•ˆ์ „ํ™”๋ฅผ ๋•๊ธฐ ์œ„ํ•ด,) (useMemo ๋ฐ useCallback๋ฅด ๋‹ค๋ฃจ๋Š”๋ฐ(regards),)

์ด ๊ฐœ๋…์ด ์ƒ์†Œํ•˜๊ฒŒ(foreign) ๋“ค๋ฆฐ๋‹ค๋ฉด ๊ฑฑ์ •ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค! 99.9%์˜ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ, ์•ฑ์„ ๊ณต์งœ๋กœ ๋” ๋‚˜์€ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•  ์ˆ˜ ์žˆ๋‹ค.


2. ๋” ์•Œ์•„๋ณด๊ธฐ

๊ธฐ๋ณธ๊ฐ’์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…์€ ์ปค๋ฎค๋‹ˆํ‹ฐ ๋ฆฌ์†Œ์Šค์˜ ๋‹ค์Œ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐ.