๋กœ๊ณ ๋กœ๊ณ 

Zustand <> React Query

2025๋…„ 9์›” 24์ผ

Zustand

์ „์—ญ ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

ย 

  • ์žฅ์ 
    • ์ž‘๊ณ  ๊ฐ€๋ณ๊ณ , ๋Ÿฌ๋‹ ์ปค๋ธŒ๊ฐ€ ๋‚ฎ๋‹ค
    • Context API์˜ ๋ถˆํ•„์š”ํ•œ ๋ฆฌ๋ Œ๋”๋ง ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ
    • Immer, devtools ๋“ฑ๊ณผ ์‰ฝ๊ฒŒ ์—ฐ๋™ ๊ฐ€๋Šฅ.
      • Immer = ๋ถˆ๋ณ€์„ฑ์„ ์‰ฝ๊ฒŒ ์œ ์ง€ํ•˜๊ฒŒ ๋„์™€์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
      • Zustand์—์„œ ์ƒํƒœ๋ฅผ ๋ฐ”๊ฟ€ ๋•Œ, ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ๋ณ€๊ฒฝํ•˜๋Š” ๋Œ€์‹  Immer์˜ prduceํ•จ์ˆ˜๋ฅผ ์จ์„œ ์ง๊ด€์ ์œผ๋กœ ์ƒํƒœ๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์คŒ

ย 

  • ๋‹จ์ 
    • ์„œ๋ฒ„ ์ƒํƒœ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์ด ์—†์Œ
    • ๋ฐ์ดํ„ฐ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ํŒจํ„ด์„ ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ๊ด€๋ฆฌํ•˜๊ธฐ ์–ด๋ ต๊ณ , ๋กœ๋”ฉ/์—๋Ÿฌ ์ƒํƒœ๋„ ์ง์ ‘ ๊ด€๋ฆฌ

ย 

  • ์‚ฌ์šฉ์ฒ˜
    • ๋กœ๊ทธ์ธํ•œ ์œ ์ € ์ •๋ณด, ํ† ๊ธ€ ์ƒํƒœ, ๋ชจ๋‹ฌ ์—ด๋ฆผ/๋‹ซํž˜, UI์ƒํƒœ ๋“ฑ ํด๋ผ์ด์–ธํŠธ ์ „์—ญ ์ƒํƒœ ๊ด€๋ฆฌ์— ์ ํ•ฉ

ย 

ย 

React Query (TanStack Query)

์„œ๋ฒ„ ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

ย 

  • ์žฅ์ 
    • API ์š”์ฒญ ๊ฒฐ๊ณผ๋ฅผ ์ž๋™์œผ๋กœ ์บ์‹ฑ โ†’ ์ƒˆ๋กœ๊ณ ์นจ/ํƒญ ์ „ํ™˜ ์‹œ์—๋„ ๋ฐ์ดํ„ฐ ์œ ์ง€
    • refetch, pagination, infinite scroll, prefetch ๋“ฑ ์„œ๋ฒ„ ๋ฐ์ดํ„ฐ ๊ด€๋ จ ๊ธฐ๋Šฅ์ด ํ’๋ถ€
    • ๋กœ๋”ฉ,์—๋Ÿฌ,์„ฑ๊ณต ์ƒํƒœ ๊ด€๋ฆฌ๊ฐ€ ์ž๋™ํ™”
    • ์„œ๋ฒ„ ๋ฐ์ดํ„ฐ์™€ ํด๋ผ์ด์–ธํŠธ UI์˜ ๋™๊ธฐํ™”๋ฅผ ์‰ฝ๊ฒŒ ๋ณด์žฅ

ย 

  • ๋‹จ์ 
    • ์ „์—ญ ์ƒํƒœ ๊ด€๋ฆฌ ๋ชฉ์ ์ด ์•„๋‹˜ (UI ์ƒํƒœ ๊ด€๋ฆฌ์—๋Š” ๋ถ€์ ํ•ฉ)
    • ๋Ÿฌ๋‹ ์ปค๋ธŒ๊ฐ€ Zustand๋ณด๋‹ค ์กฐ๊ธˆ ์žˆ์Œ
    • ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ๋Œ€๋ถ€๋ถ„ API ๋ฐ์ดํ„ฐ์™€ ์–ฝํ˜€ ์žˆ๋‹ค๋ฉด ์ง€๋‚˜์น˜๊ฒŒ React Query์— ์˜์กดํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

ย 

  • ์‚ฌ์šฉ์ฒ˜
    • ๊ฒŒ์‹œ๊ธ€ ๋ชฉ๋ก, ์‚ฌ์šฉ์ž ํ”„๋กœํ•„ API, ๋ฌดํ•œ ์Šคํฌ๋กค ๋ฐ์ดํ„ฐ, ์‹ค์‹œ๊ฐ„ ์„œ๋ฒ„ ๋ฐ์ดํ„ฐ ๋“ฑ ์„œ๋ฒ„ ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™”์— ์ตœ์ 

ย 

ย 

์ฐจ์ด์  ์š”์•ฝ

ย 

๊ตฌ๋ถ„ZustandReact Query
๋ชฉ์ ํด๋ผ์ด์–ธํŠธ ์ „์—ญ ์ƒํƒœ ๊ด€๋ฆฌ์„œ๋ฒ„ ์ƒํƒœ ๊ด€๋ฆฌ (API ์š”์ฒญ, ์บ์‹ฑ)
๋ฐ์ดํ„ฐ ์†Œ์Šค๋กœ์ปฌ/ํด๋ผ์ด์–ธํŠธ ์ค‘์‹ฌ์„œ๋ฒ„/์™ธ๋ถ€ API ์ค‘์‹ฌ
์žฅ์ ๋‹จ์ˆœ, ๊ฐ€๋ณ๊ณ  ๋น ๋ฆ„์ž๋™ ์บ์‹ฑ, ๋™๊ธฐํ™”, ์ƒํƒœ ๊ด€๋ฆฌ
๋‹จ์ ์„œ๋ฒ„ ์ƒํƒœ ์ง์ ‘ ๊ด€๋ฆฌ ์–ด๋ ค์›€์ „์—ญ ์ƒํƒœ ๊ด€๋ฆฌ ๋ถˆ๊ฐ€
์‚ฌ์šฉ ์˜ˆ์‹œ๋‹คํฌ๋ชจ๋“œ, ํ† ๊ธ€, ๋กœ๊ทธ์ธ ์ƒํƒœ๊ฒŒ์‹œ๊ธ€ ๋ชฉ๋ก, ์œ ์ € ๋ฐ์ดํ„ฐ, ๋ฌดํ•œ์Šคํฌ๋กค
  • UI/๋กœ์ปฌ ์ƒํƒœ = Zustand
  • ์„œ๋ฒ„ ๋ฐ์ดํ„ฐ = React Query