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. ๋ ์์๋ณด๊ธฐ
๊ธฐ๋ณธ๊ฐ์ ๋ํ ์์ธํ ์ค๋ช ์ ์ปค๋ฎค๋ํฐ ๋ฆฌ์์ค์ ๋ค์ ๋ฌธ์๋ฅผ ์ฐธ์กฐ.