๐ 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 | ํ์ ์ค๊ณ๊ฐ ๊ฐ๊ฒฐ |