header-img
Info :
728x90

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๋ฅผ ๋ชจ๋ธ๋งํ•˜๋Š” ๊ณผ์ •

React Query - Async States

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 ์š”์ฒญ๊ณผ ๊ด€๋ จ๋œ ๋ฒˆ์žกํ•œ  ์ž‘์—…์—†์ด "ํ•ต์‹ฌ ๋กœ์ง"์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์Œ.

 

728x90
๋”๋ณด๊ธฐ
FRONTEND/React