๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Web Development/JAVASCRIPT

์ƒํƒœ๊ด€๋ฆฌ [2ํŽธ] - Redux vs Zustand ๋น„๊ต – ์™œ ์ƒ๊ฒผ๊ณ  ์–ธ์ œ ์“ฐ๋Š”๊ฐ€?

๐Ÿ“Š Redux vs Zustand ๋น„๊ต ์š”์•ฝ

ํ•ญ๋ชฉ Redux Zustand
๋“ฑ์žฅ ์‹œ๊ธฐ 2015๋…„ (Flux ๊ธฐ๋ฐ˜) 2020๋…„ (๊ฐ„๋‹จํ•œ ์ƒํƒœ ๊ด€๋ฆฌ ๋ชฉ์ )
์ฒ ํ•™ Flux ์•„ํ‚คํ…์ฒ˜ ๊ธฐ๋ฐ˜์˜ ๋‹จ๋ฐฉํ–ฅ ํ๋ฆ„ Flux์™€ ๋ฌด๊ด€, ๊ฐ„๋‹จํ•œ API
์‚ฌ์šฉ ๋ชฉ์  ์˜ˆ์ธก ๊ฐ€๋Šฅํ•˜๊ณ  ๊ตฌ์กฐํ™”๋œ ์ƒํƒœ ๊ด€๋ฆฌ ๊ฐ€๋ณ๊ณ  ๋น ๋ฅธ ์ƒํƒœ ๊ณต์œ 
์ฝ”๋“œ ๊ตฌ์กฐ Action → Reducer → Store → State set()์œผ๋กœ ์ง์ ‘ ์ƒํƒœ ๋ณ€๊ฒฝ
๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ ๋งŽ์Œ ๊ฑฐ์˜ ์—†์Œ
๋ฏธ๋“ค์›จ์–ด redux-thunk, redux-saga ๋“ฑ ๋ณ„๋„ ๊ตฌ์„ฑ ๋‚ด์žฅ ๋ฏธ๋“ค์›จ์–ด๋กœ ๊ฐ„๋‹จ ์„ค์ • ๊ฐ€๋Šฅ
DevTool Redux ๊ณต์‹ DevTool ์ง€์› ๋‚ด์žฅ DevTool ์ œ๊ณต (๊ธฐ๋Šฅ ์ œํ•œ์ )
์ƒํƒœ ๊ตฌ๋… useSelector, connect ๋“ฑ Hook ๊ธฐ๋ฐ˜
๋ฆฌ๋ Œ๋”๋ง ์ œ์–ด ์ตœ์ ํ™” ํ•„์š” ์„ ํƒ์  ๊ตฌ๋…์œผ๋กœ ๊ฐ„๋‹จ
TypeScript ์ง€์› ๋ณต์žกํ•œ ํƒ€์ž… ์„ค๊ณ„ ํ•„์š” ํƒ€์ž… ์ง€์› ์šฐ์ˆ˜, ์‹ฌํ”Œํ•จ
์ƒํƒœ ์˜์†์„ฑ redux-persist ๋“ฑ ์™ธ๋ถ€ ๋„๊ตฌ ํ•„์š” persist ๋ฏธ๋“ค์›จ์–ด๋กœ ๊ฐ„๋‹จ ์ง€์›

๐Ÿง  Redux๋Š” ์™œ ๋งŒ๋“ค์–ด์กŒ์„๊นŒ?

  • Facebook์˜ Flux ์•„ํ‚คํ…์ฒ˜์—์„œ ์˜๊ฐ์„ ๋ฐ›์•„ ๋“ฑ์žฅ
  • ์ƒํƒœ๋Š” ์˜ค์ง Action์„ ํ†ตํ•ด์„œ๋งŒ ๋ฐ”๋€œ
  • ์ƒํƒœ ๋ณ€ํ™” ์ถ”์  ๋ฐ ์‹œ๊ฐ„ ์—ฌํ–‰ ๋””๋ฒ„๊น… ๊ฐ€๋Šฅ

๐Ÿ“Œ ์‚ฌ์šฉ ์˜ˆ์‹œ: UI ์ƒํƒœ, ๋„๋ฉ”์ธ ์ƒํƒœ, API ์ƒํƒœ๊ฐ€ ๋ณต์žกํ•˜๊ฒŒ ์–ฝํžŒ ๋Œ€ํ˜• ํ”„๋กœ์ ํŠธ

๐ŸŒฑ Zustand๋Š” ์™œ ์ƒ๊ฒผ์„๊นŒ?

  • “์ž‘๊ณ  ๋‹จ์ˆœํ•œ ์ƒํƒœ ๊ด€๋ฆฌ”๋ฅผ ์œ„ํ•ด ๋“ฑ์žฅ
  • create ํ•จ์ˆ˜ ํ•˜๋‚˜๋กœ store ์ƒ์„ฑ
  • set, get, subscribe๋กœ ์ƒํƒœ ์กฐ์ž‘
  • Flux ๊ตฌ์กฐ ์—†์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅ

๐Ÿ“Œ ์‚ฌ์šฉ ์˜ˆ์‹œ: ์ค‘์†Œํ˜• ํ”„๋กœ์ ํŠธ, ๊ฐ„๋‹จํ•œ ์•ฑ, ๋น ๋ฅธ ํ”„๋กœํ† ํƒ€์ž…

๐Ÿ” ์–ธ์ œ ๋ฌด์—‡์„ ์จ์•ผ ํ• ๊นŒ?

์ƒํ™ฉ ์ถ”์ฒœ ๋„๊ตฌ ์ด์œ 
๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ Redux ๊ตฌ์กฐ ๋ช…ํ™•, ๋””๋ฒ„๊น… ๊ฐ•๋ ฅ
์ค‘์†Œํ˜•, ๋น ๋ฅธ ๊ฐœ๋ฐœ Zustand ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ ์—†์Œ
์„œ๋ฒ„ ์ƒํƒœ ์—ฐ๋™ ํ•„์š” Redux + RTK Query ์„œ๋ฒ„์™€ ์ƒํƒœ ๋™๊ธฐํ™” ์šฉ์ด
๊ฐ„๋‹จํ•œ ์ƒํƒœ ๊ด€๋ฆฌ Zustand Hook ๊ธฐ๋ฐ˜์œผ๋กœ ๋น ๋ฅด๊ฒŒ ๊ตฌํ˜„
TypeScript ๊ธฐ๋ฐ˜ Zustand ํƒ€์ž… ์„ค๊ณ„๊ฐ€ ๊ฐ„๊ฒฐ