TanStack Query์ ๋คํธ์ํฌ ๋ชจ๋๋ ์ธํฐ๋ท ์ฐ๊ฒฐ์ด ์์ ๋ ์ฟผ๋ฆฌ์ ๋ฎคํ ์ด์ ์ด ์ด๋ป๊ฒ ๋์ํ ์ง ๊ฒฐ์ ํ๋ 3๊ฐ์ง ์ค์ ์ ์ ๊ณตํ๋ค. ์ด ๋ชจ๋๋ ๊ฐ ์ฟผ๋ฆฌ/๋ฎคํ ์ด์ ์ ๊ฐ๋ณ์ ์ผ๋ก ์ค์ ํ๊ฑฐ๋, ๊ธฐ๋ณธ๊ฐ์ ํตํด ์ ์ญ์ผ๋ก ์ค์ ํ ์ ์๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋ฐ์ดํฐ ํจ์นญ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํจ๊ป ์ฌ์ฉ๋๋ฏ๋ก, ๊ธฐ๋ณธ ๋คํธ์ํฌ ๋ชจ๋๋ online์ด๋ค.
Network Mode: online
์ด ๋ชจ๋์์๋ ์ธํฐ๋ท์ ์ฐ๊ฒฐ๋์ด ์์ ๋๋ง ์ฟผ๋ฆฌ์ ๋ฎคํ ์ด์ ์ด ์คํ๋๋ค. ์ด๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ด๋ค.
์ธํฐ๋ท ์ฐ๊ฒฐ์ด ์์ด ์ฟผ๋ฆฌ๋ฅผ ์คํํ ์ ์๋ ๊ฒฝ์ฐ, ํด๋น ์ฟผ๋ฆฌ๋ ๊ธฐ์กด์ state(pending, error, success) ์ํ๋ฅผ ๊ทธ๋๋ก ์ ์งํ๋ค. ํ์ง๋ง ์ด๋ fetchStatus๋ผ๋ ์ถ๊ฐ์ ์ธ ์ํ๊ฐ ์ ๊ณต๋์ด ๋ ์์ธํ ์ํฉ์ ์ ์ ์๋ค.
- fetching: queryFn์ด ์ค์ ๋ก ์คํ ์ค์ด๋ฉฐ, ์์ฒญ์ด ์งํ ์ค์ธ ์ํ์ด๋ค.
- paused: ์ฟผ๋ฆฌ๊ฐ ์คํ๋์ง ์๊ณ ์ผ์์ ์ง๋ ์ํ์ด๋ค. ์ธํฐ๋ท์ด ๋ค์ ์ฐ๊ฒฐ๋ ๋๊น์ง ๋๊ธฐํ๋ค.
- idle: ์ฟผ๋ฆฌ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ ์์ง๋, ์ผ์์ ์ง๋์ง๋ ์์ ์ ํด ์ํ์ด๋ค.
ํธ์๋ฅผ ์ํด isFetching๊ณผ isPaused๋ผ๋ flag๋ ์ด ์ํ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ๊ณต๋๋ค.
๋ก๋ฉ ์คํผ๋๋ฅผ ํ์ํ ๋ pending ์ํ๋ง ํ์ธํ๋ ๊ฒ์ผ๋ก๋ ๋ถ์กฑํ ์ ์๋ค. ์ธํฐ๋ท ์ฐ๊ฒฐ์ด ์๋ ์ํ์์ ์ปดํฌ๋ํธ๊ฐ ์ฒ์ ๋ง์ดํธ๋๋ฉด, ์ฟผ๋ฆฌ๋ state: 'pending' ์ด๋ฉด์ ๋์์ fetchStatus: 'paused' ์ํ์ผ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๋ง์ฝ ์จ๋ผ์ธ ์ํ์์ ์ฟผ๋ฆฌ๊ฐ ์คํ๋์์ง๋ง ์์ฒญ์ด ์งํ๋๋ ๋์ค์ ์คํ๋ผ์ธ์ด ๋๋ฉด TanStack Query๋ ์ฌ์๋ ๋ก์ง ๋ํ ์ผ์์ ์ง๋๋ค. ์ด๋ ๊ฒ ์ผ์์ ์ง๋ ์ฟผ๋ฆฌ๋ ์ธํฐ๋ท์ด ๋ค์ ์ฐ๊ฒฐ๋๋ฉด ์ด์ด์ ์คํ๋๋ค. ์ด๋ refetchOnReconnect ์ต์ (์ด ๋ชจ๋์์๋ ๊ธฐ๋ณธ๊ฐ์ด true)๊ณผ๋ ๋ณ๊ฐ๋ก ๋์ํ๋๋ฐ ๋ฐ์ดํฐ๋ฅผ ์ฌ์์ฒญํ๋ ๊ฒ์ด ์๋๋ผ ์ด์ด์ ์คํํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ด๋ค. ๋ง์ฝ ๊ทธ ์ฌ์ด์ ์ฟผ๋ฆฌ๊ฐ ์ทจ์๋์๋ค๋ฉด ์ด์ด์ ์คํํ์ง ์๋๋ค.
Network Mode: always
์ด ๋ชจ๋์์๋ TanStack Query๊ฐ ์จ๋ผ์ธ/์คํ๋ผ์ธ ์ํ๋ฅผ ๋ฌด์ํ๊ณ ํญ์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ค.
์ด ๋ชจ๋๋ ์ฟผ๋ฆฌ๊ฐ ๋์ํ๋ ๋ฐ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ด ํ์ ์๋ ํ๊ฒฝ์์ ์ฌ์ฉํ๊ธฐ ์ ํฉํ๋ค. ์๋ฅผ ๋ค์ด, AsyncStorage์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค๊ฑฐ๋ queryFn์์ ๋จ์ํ Promise.resolve(5)์ ๊ฐ์ ๊ฐ์ ๋ฐํํ ๋ ์ ํํ ์ ์๋ค.
- ์ธํฐ๋ท ์ฐ๊ฒฐ์ด ์๋ค๊ณ ํด์ ์ฟผ๋ฆฌ๊ฐ paused๋๋ ์ผ์ ์ ๋ ์๋ค.
- ์ฌ์๋ ์ญ์ ๋ฉ์ถ์ง ์๊ณ , ์คํจํ๋ฉด ๋ฐ๋ก error ์ํ๊ฐ ๋๋ค.
- ์ด ๋ชจ๋์์ refetchOnReconnect์ ๊ธฐ๋ณธ๊ฐ์ false์ด๋ค. ๋คํธ์ํฌ ์ฐ๊ฒฐ์ด ํ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๊ธฐ ๋๋ฌธ์, ์ธํฐ๋ท์ด ๋ค์ ์ฐ๊ฒฐ๋๋ค๊ณ ํด์ ๊ตณ์ด ๋ฐ์ดํฐ๋ฅผ ๋ ๊ฐ์ ธ์ฌ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ํ๋ค๋ฉด ์ด ์ต์ ์ ๋ค์ ์ผค ์ ์๋ค.
Network Mode: offlineFirst
์ด ๋ชจ๋๋ online๊ณผ always์ ์ค๊ฐ ์ง์ ์ ํด๋นํ๋ค. queryFn์ ์ต์ด ํ ๋ฒ์ ์คํํ์ง๋ง, ์คํจ ์ ์ฌ์๋๋ ์ผ์์ ์งํ๋ค.
์ด ๋ฐฉ์์ offline-fist PWA์ฒ๋ผ ์๋น์ค์์ปค๊ฐ ์์ฒญ์ ๊ฐ๋ก์ฑ ์บ์ฑ์ ์ฒ๋ฆฌํ๊ฑฐ๋, Cache-Control header๋ฅผ ํตํด HTTP ์บ์ฑ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์ ๋งค์ฐ ์ ์ฉํ๋ค.
์ด๋ฐ ์ํฉ์์๋ ์ฒซ ์์ฒญ์ด ์คํ๋ผ์ธ ์ ์ฅ์๋ ์บ์์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ์ฑ๊ณตํ ์ ์๋ค. ํ์ง๋ง cache miss๊ฐ ๋ฐ์ํ์ฌ ์ค์ ๋คํธ์ํฌ ์์ฒญ์ด ์คํจํ๋ ๊ฒฝ์ฐ, ์ด ๋ชจ๋๋ online ๋ชจ๋์ฒ๋ผ ์ฌ์๋๋ฅผ ์ผ์์ ์งํ๋ฉฐ ๋์ํ๋ค.
Devtools
TanStack Query ๊ฐ๋ฐ์ ๋๊ตฌ์์๋ ์ธํฐ๋ท ์ฐ๊ฒฐ์ด ์์ด ์คํ๋์ง ๋ชปํ๋ ์ฟผ๋ฆฌ๋ฅผ paused ์ํ๋ก ํ์ํด์ค๋ค. ๋ํ, Mock offline behavior(์คํ๋ผ์ธ ๋์ ํ๋ด๋ด๊ธฐ) ํ ๊ธ ๋ฒํผ์ด ์์ด ์คํ๋ผ์ธ ์ํ๋ฅผ ์๋ฎฌ๋ ์ด์ ํด๋ณผ ์ ์๋ค. ์ด ๋ฒํผ์ ์ค์ ์ธํฐ๋ท ์ฐ๊ฒฐ์ ๋๋ ๊ฒ์ด ์๋๋ผ TanStack Query์ OnlineManager๋ฅผ ์คํ๋ผ์ธ ์ํ๋ก ์ค์ ํ๋ ์ญํ ์ ํ๋ค.
Signature
- networkMode: 'online' | 'always' | 'offlineFirst'
- optional
- ๊ธฐ๋ณธ๊ฐ์ online์ด๋ค.
https://tanstack.com/query/latest/docs/framework/react/guides/network-mode
Network Mode | TanStack Query React Docs
TanStack Query provides three different network modes to distinguish how and should behave if you have no network connection. This mode can be set for each Query / Mutation individually, or globally v...
tanstack.com
'Frontend > TanStack Query' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| Dependent Queries (0) | 2025.11.04 |
|---|---|
| Parallel Queries (0) | 2025.11.03 |
| Query Options (0) | 2025.10.23 |
| Query Functions (0) | 2025.10.22 |
| Query Keys (0) | 2025.10.21 |