Network Mode
TanStack Query๋ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ด ์๋ ๊ฒฝ์ฐ query์ mutation์ด ์ด๋ป๊ฒ ๋์ํด์ผ ํ๋์ง ๊ตฌ๋ถํ๊ธฐ ์ํด 3๊ฐ์ง ๋ค๋ฅธ ๋คํธ์ํฌ ๋ชจ๋๋ฅผ ์ ๊ณตํ๋ค. ๋คํธ์ํฌ ๋ชจ๋๋ query/Mutation๋ง๋ค ๊ฐ๋ณ์ ์ผ๋ก ์ค์ ํ ์๋ ์๊ณ , query/mutation ๊ธฐ๋ณธ๊ฐ์ ํตํด ์ ์ญ์ ์ผ๋ก ์ค์ ํ ์๋ ์๋ค.
TanStack Query๋ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ(fetching) ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฒฐํฉ๋ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ(fetching )์ ๊ฐ์ฅ ์์ฃผ ์ฌ์ฉ๋๋ฏ๋ก, ๊ธฐ๋ณธ ๋คํธ์ํฌ ๋ชจ๋๋ ์จ๋ผ์ธ์ ๋๋ค.
1. Network Mode: online
์ด ๋ชจ๋์์๋ ๋คํธ์ํฌ์ ์ฐ๊ฒฐ๋์ด ์์ง ์์ผ๋ฉด query/mutation๊ฐ ๋ฐ์ํ์ง ์๋๋ค. online ๋ชจ๋๊ฐ ๊ธฐ๋ณธ ๋ชจ๋์ด๋ค. ๋ง์ฝ query์ ๋ํด fetch๊ฐ ์์๋๋ฉด, (๋คํธ์ํฌ ์ฐ๊ฒฐ์ด ์๊ธฐ ๋๋ฌธ์) fetch๋ฅผ ์ํํ ์ ์๋ ๊ฒฝ์ฐ, ํญ์ ์ํ(pending, error, success)๋ก ๋จธ๋ฌด๋ฅธ๋ค. ๊ทธ๋ฌ๋ fetchStatus๊ฐ ์ถ๊ฐ์ ์ผ๋ก ๋ ธ์ถ๋๋ฉด, ๋ค์ ์ค ํ๋๊ฐ ๋ ์ ์์ต๋๋ค:
fetching: queryFn์ด ์ค์ ๋ก ์คํ ์ค์ด๋ค. - ์์ฒญ์ด ๋๊ธฐ ์ค(in-flight)paused: query๊ฐ ์คํ๋๊ณ ์์ง ์๋ค. - ๋ค์ ์ฐ๊ฒฐ๋ ๋๊น์ง ์ผ์ ์ค์งidle: query๋ฅผ ๊ฐ์ ธ์ค์ง ์๊ณ , ์ผ์ ์ค์ง๋์ง๋ ์์
isFetching๊ณผ isPaused ํ๋๊ทธ๋ค์ ์ด ์ํ์์ ํ์๋์ด, ํธ์์ ๋
ธ์ถ๋ฉ๋๋ค.
๋ก๋ฉ ์คํผ๋๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด
pending์ํ๋ฅผ ํ์ธํ๋ ๊ฒ์ผ๋ก๋ ์ถฉ๋ถํ์ง ์์ ์ ์๋ค๋ ์ ์ ๋ช ์ฌํด๋ผ. query๋state: 'pending'์ํ์ผ ์ ์์ง๋ง,fetchStatus: 'paused'์ผ ์ ์๋ค. ๋ง์ฝ ์ฒ์ ๋ง์ดํธํ๋ ๊ฒฝ์ฐ๋ผ๋ฉด, ๋คํธ์ํฌ ์ฐ๊ฒฐ์ด ์๋ค.
์ฌ์ฉ์๊ฐ ์จ๋ผ์ธ ์ํ์ด๊ธฐ ๋๋ฌธ์ query๊ฐ ์คํ๋์ง๋ง,
fetch๊ฐ ์งํ ์ค์ธ ๋์์ ์คํ๋ผ์ธ ์ํ๊ฐ ๋๋ฉด, TanStack Query๋ ์ฌ์๋ ๋ฉ์ปค๋์ฆ์ ์ผ์ ์ค์งํ๋ค.
์ผ์ ์ค์ง๋ query๋ ๋คํธ์ํฌ ๋ค์ ์ฐ๊ฒฐ๋๋ฉด ๊ทธ ์ดํ๋ถํฐ ์ด์ด์ ์คํ๋ฉ๋๋ค.
์ด๋ refetchOnReconnect(์ด ๋ชจ๋์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก true์ด๊ธฐ๋ ํจ)์๋ ๋ฌด๊ดํ๋ฉฐ,
์ด๋ refetch๊ฐ ์๋๋ผ continue์ด๊ธฐ ๋๋ฌธ์
๋๋ค.
๊ทธ ์ฌ์ด์ query๊ฐ ์ทจ์๋์๋ค๋ฉด, ๊ณ์ํ์ง fetchํ์ง ์์ต๋๋ค.
2. Network Mode: always
์ด ๋ชจ๋์์ TanStack Query๋ ํญ์ fetchgkau, ์จ๋ผ์ธ/์คํ๋ผ์ธ ์ํ๋ฅผ ๋ฌด์ํ๋ค.
์ด ๋ชจ๋๋ () ์ ํํ๋ ค๋ ๋ชจ๋์ผ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
(TanStack Query๋ฅผ ์ฌ์ฉํ๋ค๋ฉด,)
(query๊ฐ ์๋ํ๊ธฐ ์ํด ๋คํธ์ํฌ ์ฐ๊ฒฐ์ด ํ์ํ์ง ์์ ํ๊ฒฝ์์,)
e.g., AsyncStorage๋ฅผ ์ฝ๊ฑฐ๋, queryFn์์ Promise.resolve(5)๋ฅผ ๋ฐํํ๋ ค๋ ๊ฒฝ์ฐ
- Queries๋
paused๋์ง ์๋๋ค (๋คํธ์ํฌ์ ์ฐ๊ฒฐ๋์ด ์์ง ์๊ธฐ ๋๋ฌธ์) - ์ฌ์๋๋ ์ผ์ ์ค์ง๋์ง ์์ต๋๋ค - query๊ฐ ์คํจํ๋ฉด,
error์ํ๊ฐ ๋๋ค. - ์ด ๋ชจ๋์์
refetchOnReconnect๋ ๊ธฐ๋ณธ์ ์ผ๋กfalse๋ก ์ค์ ๋๋ค.- ์๋ํ๋ฉด ๋คํธ์ํฌ ์ฌ์ฐ๊ฒฐ์ ๋ ์ด์ ์ค๋๋(stale) query๋ฅผ refetchํ๋ ๊ฑด ์ข์ ์งํ๊ฐ ์๋๊ธฐ ๋๋ฌธ์ด๋ค.
- ๊ทธ๋ฌ๋ ์ํ๋ค๋ฉด ์ด๋ฅผ ์ผ๋ ์ ์๋ค.
3. Network Mode: offlineFirst
์ด ๋ชจ๋๋ ์ฒซ ๋ฒ์งธ ๋ ์ต์
์ฌ์ด์ ์ ์ถฉ์์ผ๋ก,
TanStack Query๋ queryFn์ ํ ๋ฒ ์คํํ ํ์ ์ฌ์๋๋ฅผ ์ผ์ ์ค์งํฉ๋๋ค.
์ด ๋ชจ๋๋ ์คํ๋ผ์ธ ์ฐ์ PWA์์์ ๊ฐ์ด ์บ์ฑ์ ์ํด ์์ฒญ์ ๊ฐ๋ก์ฑ๋ serviceWorker๊ฐ ์๋ ๊ฒฝ์ฐ๋
Cache-Control ํค๋๋ฅผ ํตํด HTTP ์บ์ฑ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์ ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
4. Devtools
TanStack Query Devtools๋ ์ฟผ๋ฆฌ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ผ ํ์ง๋ง ๋คํธ์ํฌ ์ฐ๊ฒฐ์ด ์๋ ๊ฒฝ์ฐ ์ฟผ๋ฆฌ๋ฅผ ์ผ์ ์ค์ง๋ ์ํ๋ก ํ์ํฉ๋๋ค. ๋ํ ์คํ๋ผ์ธ ๋์์ ๋ชจ์ํ๋ ํ ๊ธ ๋ฒํผ์ด ์์ต๋๋ค. ์ด ๋ฒํผ์ ์ค์ ๋ก ๋คํธ์ํฌ ์ฐ๊ฒฐ์ ๋ฐฉํดํ์ง๋ ์์ง๋ง(์ด๋ ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ๋๊ตฌ์์ ํ ์ ์์ต๋๋ค), OnlineManager๋ฅผ ์คํ๋ผ์ธ ์ํ๋ก ์ค์ ํฉ๋๋ค.
4. Signature(ํน์ง, ๋ํ)
networkMode: 'online' | 'always' | 'offlineFirst'
- optional(์ต์ )
- defaults to โonlineโ