React-Query ๋?
๋ฆฌ์กํธ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๊ฑฐ๋ ์บ์ฑ, ์ ๋ฐ์ดํธ, ์๋ฌ ์ฒ๋ฆฌ์ ๊ฐ์ ๋น๋๊ธฐ ๋ก์ง์ ์ง์ํ๋ data fetching ๋ผ์ด๋ธ๋ฌ๋ฆฌ.
Server-side ์ Client-side ์ฌ์ด์์ ๋น๋๊ธฐ ๋ก์ง์ ๋ณด๋ค ์ฝ๊ฒ ๋ค๋ฃจ๊ฒ ํด์ฃผ๋ฉฐ Server State๋ฅผ ๊ด๋ฆฌํด์ค๋ค.
React Query ๋ด์์์ Server State ์ ์
- Client๊ฐ ์ ์ดํ๊ฑฐ๋ ์์ ํ์ง ์๋ ์์น์์ ์๊ฒฉ์ผ๋ก ์ ์ง๋จ.
- fetching ๋ฐ updating์ ์ํ ๋น๋๊ธฐ API๋ฅผ ํ์๋ก ํจ.
- ์ํ๊ฐ ๊ณต์ ๋๋ฉฐ ์ฌ์ฉ์ ๋ชจ๋ฅด๊ฒ ๋ณ๊ฒฐ๋ ์ ์์.
- ์ฃผ์ํ์ง ์์ผ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ ์ฌ์ ์ผ๋ก "out of date" ์ํ๊ฐ ๋ ์ ์์.
React Query์ ํน์ง (Server State ์ ์ธ)
- Caching ์ง์
- ๋์ผํ ๋ฐ์ดํฐ์ ๋ํ ์ค๋ณต ์์ฒญ์ ์ ๊ฑฐํ๊ณ ํ ๋ฒ๋ง ์์ฒญํ๋๋ก ํจ.
- "out of date" ์ํ์ ๋ฐ์ดํฐ๋ฅผ ํ์ ํ๊ณ updating ์ง์.
- Pagination ๋ฐ Lazy Loading ์ฑ๋ฅ ์ต์ ํ.
- Server State์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋ฐ garbage collection ์ง์.
- React Hooks์ ์ ์ฌํ ์ธํฐํ์ด์ค ์ ๊ณต.
React Query ์์ Server State๋ฅผ ๋ชจ๋ธ๋งํ๋ ๊ณผ์
1. Fetching
์ด๊ธฐ ์ํ์ด๋ฉฐ ๋ฐฑ์๋์ ๊ฐ์ ์ธ๋ถ ์์ค๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํ์ฌ ๋์.
2. Fresh
Fetching ์ดํ์ Server-Side ์ Client-Side์ ๋ฐ์ดํฐ๊ฐ ๋์ผํ๊ฒ ์ ์ง๋๋ ์ํ.
3. Stale
๋ฐ์ดํฐ๊ฐ ์ค๋๋ ์ํ์ด๋ฉฐ Fetching์ ํตํด Fresh ์ํ๋ก ์ ์งํด์ฃผ์ด์ผ ํ๋ ์ํ.
4. Inactive
์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉ๋์ง ์๋ ๋ฐ์ดํฐ์ ๋ํ ์ํ. React Query์์ ๋ธ๋ผ์ฐ์ ์บ์๋ฅผ ๊ด๋ฆฌํ๋ ๊ฐ๋น์ง ์ปฌ๋ ํฐ์ ์ํด ์ญ์ ๋จ.
5. Deleted
Inactive ์ํ์ ๋ฐ์ดํฐ๊ฐ ์บ์์์ ์ญ์ ๋ ์ํ.
React Query ์ ์ฅ์
ใif(kakao)2021 - ์นด์นด์คํ์ด ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋ค์ด React Query๋ฅผ ์ ํํ ์ด์ ใ
1. React Application์์ ์๋ฒ ์ํ๋ฅผ ๋ถ๋ฌ์ค๊ณ , cachingํ๋ฉฐ, ์ง์์ ์ผ๋ก ๋๊ธฐํํ๊ณ ์ ๋ฐ์ดํธํ๋ ์์ ์ ๋์์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
2. ๋ณต์กํ๊ณ ์ฅํฉํ ์ฝ๋๊ฐ ํ์ํ ๋ค๋ฅธ ๋ฐ์ดํฐ ๋ถ๋ฌ์ค๊ธฐ ๋ฐฉ์๊ณผ ๋ฌ๋ฆฌ React Component ๋ด๋ถ์์ ๊ฐ๋จํ๊ณ ์ง๊ด์ ์ผ๋ก API๋ฅผ ์ฌ์ฉํ ์ ์์.
3. ๋ ๋์๊ฐ React Query์์ ์ ๊ณตํ๋ ์บ์ฑ, Window Focus Refetching ๋ฑ ๋ค์ํ ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ API ์์ฒญ๊ณผ ๊ด๋ จ๋ ๋ฒ์กํ ์์ ์์ด "ํต์ฌ ๋ก์ง"์ ์ง์คํ ์ ์์.