์ด ๋ ํฌ์งํ ๋ฆฌ๋ Tanstack Query
๊ณต์๋ฌธ์๋ฅผ ํบ์๋ณด๊ณ ์๊ฒ๋ ์ ์ ๊ธฐ๋กํฉ๋๋ค.
์ ์ฒด์ ์ผ๋ก ๋ฐฐ์ด ๊ฒ
- ์์ด ๋ฌธ์๋ฅผ ์ฝ๋ ๋ฐฉ๋ฒ... ์์ง ์์ ํ์ง ์์ง๋ง ๊ณ์ ๋์ ํด์ผ๊ฒ ๋ค.
- ๊ณต์๋ฌธ์๊ฐ ์ง~์ง ์น์ ํ๋ค๋ ๊ฒ.. '์ด ์ ๋๊น์ง ๊ณ ๋ คํ๋ค๊ณ ?' ์ถ์ ๋งํผ, ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ ํ ์ ์๋ ์ต์ ์ ์ ๊ณตํ๋ค. ์ฌ์ฉ์ ์๊ฐ ๋ง์ ์ด์ ๋ฅผ ์๊ฒ ์
- ํจํค์ง๋ฅผ ์ถ๊ฐํ ๋, ์๋น์ค์ ์๊ตฌ์ฌํญ์ด ํจํค์ง์ ๊ตฌํ๋์ด ์๋์ง ์๋์ง ํ์ธํ๋ฉด์ ์ ํํด์ผ๊ฒ ๋ค. ๊ทธ๋ฌ๋ ค๋ฉด ์์ด๋ฅผ ์ํด์ ๊ณต์๋ฌธ์๋ฅผ ํ๋์ ํ์ ํ ์ค ์์์ผ๊ฒ ์ง..
GUIDES & CONCEPTS
-
important defaults
์บ์ฑ์ด ๋๋ค ์ ๋๋ง ์์์ง, ์ด๋ ๊ฒฝ์ฐ์ ์ค๋๋ ์ํ๋ก ์ทจ๊ธํ๋์ง์inactive
์ํ๋ก ์ ํ ๋ค 5๋ถ ๋ค ๊ฐ๋น์ง ์ปฌ๋ ํฐ์ ๋์(์บ์์์ ์ญ์ )์ด ๋๋ค. -
important defaults
5๋ถ๊ฐ ์บ์ฑ์ด๋ผ๋๋ฐ, ํ 60๋ถ ์บ์ฑํ๋ฉด ์ฑ๋ฅ์ด ์์ข์์ง๊น ? -
queries
์๋ฒ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๋ ์์ฒญ์ ๊ฒฝ์ฐ ๋ฎคํ ์ด์ ์ ์ฌ์ฉํด๋ผ... ๋ผ๋๊ฑธ ๊ณต์๋ฌธ์์์ ๋ช ์์ ์ผ๋ก ํ์ธํ ์ ์์๋ค. -
queries
fetchStatus๊ฐ ์๋๊ฒ๋ ์ฒจ ์์๋๋ฐ ์ด๊ฑฐ๋ก ์ํ๋ฅผ ์กฐํฉํ ์ ์๋ค๋ ์ ๊ธฐ. ํนํ status๋ ๋ฐ์ดํฐ์ ์ํ๋ฅผ, fetchStatus๋ queryFn์ ์คํ ์ํ๋ฅผ ๊ตฌ๋ถํ๋ ๊ฒ์ ์๊ฒ ๋์๋ค. -
query keys
์ฟผ๋ฆฌํค ๋ฐฐ์ด ์์๋ ์ค์ํ์ง๋ง ๊ฐ์ฒด ๋ด๋ถ ์์๋ ํด์๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์์๋ ์ค์ํ์ง ์๋ค. -
query functions
์ฟผ๋ฆฌ ํจ์์QueryFunctionContext
๊ฐ ์๋์ผ๋ก ๊ฐ์ด ์ ๋ฌ๋๋ค. -
query options
๋์ผํ ์ฟผ๋ฆฌ ์์ฒญ์ ์ฌ๋ฌ ๊ตฐ๋ฐ์์ ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ(ex.useQuery
,useSuspenseQuery
,useQueries
๋ฑ) ์ฟผ๋ฆฌ ์ต์ ์ ์ฌ์ฉํ๋ฉด ์ผ๊ด์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๋ค. -
parallel queries
๊ธฐ๋ณธ์ ์ผ๋กuseQuery
์ ์์ฒญ์ด ๋ณ๋ ฌ๋ก ์ํ๋๋ค๋ ๊ฒ์ ์๊ฒ๋จ. ๊ทธ๋ฆฌ๊ณuseQueries
๊ฐ ๋์ ์ฟผ๋ฆฌ๋ฅผ ์์ฒญํ๋ ํ ์ด๊ตฌ๋ ๋ผ๋๊ฑธ ์๊ฒ๋จ(๊ทธ๋์์ useQuery์ ์ฐจ์ด์ ์ด ๋ญ์ง ํ์์) -
background fetching indicators
useIsFetching
๋ผ๋ ํ ์ ํตํด ๋ฐ์ดํฐ๋ฅผ fetching ๋ฐ๋์ค์ธ์ง ์๋์ง์ ๋ํด ์ ์ ์๋ค๋ ๊ฒ.. ์๋ฅผ ์ฌ์ฉํ๋ฉด ๊นํ๋ธ ํ๋ก๊ทธ๋ ์ค๋ฐ๋ฅผ ๊ตฌํํ๊ธฐ ์ฉ์ดํ ๊ฒ ๊ฐ๋ค. ์ง์ ์ฌ์ฉํด๋ด์ผ ์๊ฒ ์ง๋ง..! -
disabling/pausing queries
isLoading === isPending && isFetching ๋ผ๋ ๊ฒ -
disabling/pausing queries
skipToken์ ์ฌ์ฉํด์ ์์ฒญํ๋ฉด enable์ ์ฌ์ฉํ์ ๊ฒฝ์ฐ๋ณด๋ค ๋ช ํํ ํ์ ์ง์ ์ด ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ์๊ฒ๋์๊ณ , ์ด ๊ฒฝ์ฐ๋ refetch์์ ๋์ํ์ง ์์ผ๋ฏ๋ก, ์กฐ๊ฑด์ด ๋ง์กฑ๋์ง ์์ผ๋ฉด ์์ ์ฟผ๋ฆฌ๋ฅผ "์กด์ฌํ์ง ์๋ ๊ฒ์ฒ๋ผ" ๋ค๋ฃจ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ฉด ์ข๋ค๋ ๊ฒ์ ์๊ฒ๋จ -
invalidations from mutations
๋ฎคํ ์ด์ ์ ์ฌ๋ฐ๋ฅธ ์ฌ์ฉ๋ฐฉ๋ฒ์ ์๊ฒ๋์๋ค...! ๊ทธ๊ฐ ํ์ํ ๋๋ง๋ค ๊ฒ์ํด์ ์ฝ๋ ๊ธ์ด์๋๋ฐ... ํ.. -
updates from mutation responses
๋ฎคํ ์ด์ ์คํ ํ ์ฟผ๋ฆฌ๋ฌดํจํ + ๋คํธ์ํฌ ์์ฒญ ์์ด ๋ฎคํ ์ด์ ์๋ต ๊ฐ์ฒด๋ก ๋คํธ์ํฌ ๋ถํ๋ฅผ ์ค์ด๋ ๋ฐฉ๋ฒ์ ์๊ฒ๋์๋ค. ํ์ง๋ง ์ํฉ์ ๋ฐ๋ผ invalidateQueries์ setQueryData์ ์ฌ์ฉ์ ๋ช ํํ ๊ตฌ๋ถํ๋ ๊ฒ์ด ์ค์ํ ๋ฏ ํ๋ค. -
Optimistic Updates
: ๋๊ด์ ์ ๋ฐ์ดํธ๋ฅผ ์ํํ๋ ๋๊ฐ์ง ๋ฐฉ์๊ณผ ๊ฐ๊ฐ ์ด๋์ ์จ์ผ ์ข์์ง์ ๋ํด ์๊ฒ๋์๋ค. -
Performance & Request Waterfalls
: ๋๋ง์ ์ฑ๋ฅ์ต์ ํ.. ์ผ๋ฐ์ ์ผ๋ก ๋ฐ์ํ๋ 4๊ฐ์ง ํํ(์ผ๋ฐ, ๋ณ๋ ฌ, ์ค์ฒฉ, ์ฝ๋๋ถํ )์ ์์ฒญ ์ํฐํ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์๊ฒ๋์๋ค. ๋๊ฒ ์ค์ํ ํํธ๋ผ ๋ฐ๋ณตํด์ ๊ณฑ์น์ผ๋ฉด ์ข์ ๋ฏ ํ๋ค. -
Prefetching & Router Integration
: ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํ Prefetching ๊ธฐ๋ฒ๊ณผ prefetch๋ ๋ฐ์ดํฐ๊ฐ ์ด๋ค ๋ฐฉ์์ผ๋ก ์บ์์ ์ฑ์์ง๋์ง์, ์ด ๊ณผ์ ์์์ ๋ ๋๋ง ์ฑ๋ฅ ์ด์์ ๋ํด ์ ์ ์์๋ค. -
Server Rendering & Hydration
: ๊ณต๋ถํ๋ค๊ฐ ๊ธฐ์ ํ ํํธ. SSR๊ณผ CSR์ ์ฟผ๋ฆฌ ํด๋ผ์ด์ธํธ๊ฐ ๋ฐ๋ก์๊ณ , ์ฌ๊ธฐ์ prefetch๋ฅผ ์ํํ์ ๋ ์ฟผ๋ฆฌ๋ฐ์ดํฐ๋ฅผ ๋๊ธฐํํ๊ณ , ๋ ๋๋ง์ ์ฑ๋ฅ ์ด์๋ฅผ ์ค์ด๋ ๋ฐฉ๋ฒ์ ์ ์ ์์๋ค. -
Render Optimizations
: ํ์คํ ์ฟผ๋ฆฌ๊ฐ ์ต์ ํ๋ฅผ ์ ์ฉํ๋ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ์ ์ ์ ์์์. ์ฝ๋๋ฅผ ๊น๋ณด๋ฉด์ ๊ฐ์ด ์ฝ์ด๋ด๋ ์ข์ ๊ฒ ๊ฐ๋ค.- ๊ตฌ์กฐ์ ๊ณต์ : ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋น๊ตํ ๋ ๊ตฌ์กฐ์ ๋น๊ต๋ฅผ ํ๊ณ , ๋ฐ๋๋ถ๋ถ๋ง ์ ๋ฐ์ดํธํจ
- ์ฐธ์กฐ ์ ์ฒด์ฑ : useSyncExternalStore๋ฅผ ํตํด ์ธ๋ถ ์ ์ฅ์์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ ๋ณํ๋ฅผ ํ์งํจ. ํจ์จ์ฑ์ ์ํด ๋ด๋ถ ์ฐธ์กฐ๊ฐ์ ์ ์งํ๋ฉด์, ์ต์์ ๊ฐ์ฒด๋ง ์๋ก์ด ์ฐธ์กฐ๊ฐ์ ๋๊ธฐ๋ฉฐ ๊ตฌ์กฐ์ ๊ณต์ ๋ฅผ ์ํ
- useQuery๋ก๋ถํฐ ๋ฆฌํด๋ ์์ฑ ์ค ์ฌ์ฉ๋๋ ๋ถ๋ถ๋ง ํธ๋ํน ํจ