์ํ๊ด๋ฆฌ [5ํธ]: Redux, Zustand, Tanstack Query — ์ธ์ , ๋ฌด์์ ์จ์ผ ํ ๊น?
๐ง ์ํ ๊ด๋ฆฌ ๋๊ตฌ, ์ ์ด๋ ๊ฒ ๋ง์๊น?
ํ๋ก์ ํธ๋ฅผ ํ๋ค ๋ณด๋ฉด "์ด๊ฑด Redux๋ก?" "Zustand๊ฐ ๋ ์ฝ์ง ์๋?" ๊ฐ์ ๊ณ ๋ฏผ์ด ์๊น๋๋ค.
๊ฒ๋ค๊ฐ ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๋ฉด Tanstack Query๋ ์จ์ผ ํ๋ค๊ณ ? ๐ต๐ซ
1. ๋๋์ฒด ์ด ๋๊ตฌ๋ค์ ๊ฐ๊ฐ ๋ญ ํ๋ ๊ฑด๊ฐ์?
ํญ๋ชฉ | Redux | Zustand | Tanstack Query |
---|---|---|---|
์ฃผ ์ญํ | ์ ์ญ ์ํ ๊ด๋ฆฌ | ๊ฐํธํ ์ ์ญ ์ํ ๊ณต์ | ์๋ฒ ์ํ ๊ด๋ฆฌ (fetch, cache ๋ฑ) |
๋น๋๊ธฐ ์ฒ๋ฆฌ | thunk, saga ๋ฑ ์ธ๋ถ ๋๊ตฌ ํ์ | fetch ์ง์ ์ฌ์ฉ | ๋ด์ฅ๋ ์๋ ์ฒ๋ฆฌ |
์บ์ฑ | ์ง์ ๊ตฌํ | ์ง์ ๊ตฌํ | ๊ธฐ๋ณธ ์ ๊ณต |
optimistic UI | ์๋ ๊ตฌํ | ์๋ ๊ตฌํ | ์ง์ |
๊ฐ๋ฐ์ ๊ฒฝํ | ๋ณด์ผ๋ฌํ๋ ์ดํธ ๋ง์ | ๊ฐ๋จํ๊ณ ์ง๊ด์ | ์๋ฒ ์ํ ์ฒ๋ฆฌ์ ์ต์ ํ |
์ฃผ์ ์์ | ๋ก๊ทธ์ธ, UI ์ํ | ๋ชจ๋ฌ, ๋คํฌ๋ชจ๋ | ๊ฒ์๋ฌผ, ์ ์ ์ ๋ณด |
2. ์์ ๋ก ๋ณด๋ฉด ๋ ์ฝ๊ฒ ์ดํด๋จ
๐ ์ ์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ 3๊ฐ์ง ๋ฐฉ์
โ Tanstack Query (์๋ ์บ์ฑ, ๋ฆฌํจ์น, ๋ก๋ฉ/์๋ฌ ์ํ ๊ด๋ฆฌ)
const { data: user } = useQuery(['user'], fetchUser);
โก Redux (thunk, ๋ก๋ฉ/์๋ฌ ์ํ ์ง์ ๊ตฌํ ํ์)
// useEffect ๋ด๋ถ์์ dispatch(fetchUser())
const user = useSelector(state => state.user);
โข Zustand (๊ฐ๋จํ์ง๋ง ์บ์ฑ/๋ก๋ฉ ์ง์ ์ฒ๋ฆฌ)
const user = useUserStore((s) => s.user);
useEffect(() => {
fetch('/api/user')
.then(res => res.json())
.then(setUser);
}, []);
3. ์ธ์ ์ด๋ค ๊ฑธ ์จ์ผ ํ ๊น?
์๋ฒ์ ํต์ ํ ๋ฐ์ดํฐ๋ Tanstack Query, UI ์ํ๋ Zustand/Redux๋ก ๋๋๋ ๊ฒ ๋ฒ ์คํธ!
์ ๋ต | ์ค๋ช |
---|---|
Tanstack Query + Zustand | - ์๋ฒ ์ํ: Tanstack Query - UI ์ํ: Zustand ๊ฐ๋ณ๊ณ ๋น ๋ฅธ ์ํ ๊ด๋ฆฌ ์กฐํฉ |
Redux + RTK Query | - ์ด๋ฏธ Redux๋ฅผ ์ฐ๊ณ ์๋ค๋ฉด? - ์๋ฒ ์ํ๋ RTK Query๋ก ์ถ๊ฐ ์ค๋ํ ํ๋ก์ ํธ์ ์์ ์ |
4. ๊ทธ๋ผ Redux๋ ์ ์จ๋ ๋๋์?
์ฌ์ค ์์ฆ์๋ ์์ ํ๋ก์ ํธ์์๋ Redux๋ฅผ ๊ตณ์ด ์ธ ํ์๋ ์์ต๋๋ค.
๋ค๋ง ๋๊ท๋ชจ ํ, ๋ณต์กํ ์ก์
ํ๋ฆ, ๋ฏธ๋ค์จ์ด๊ฐ ํ์ํ ๊ฒฝ์ฐ๋ ์ฌ์ ํ ๊ฐ๋ ฅํ ํด์ด์์.
- ๊ณตํต ์ก์ ๋ก๊น , ๋ฏธ๋ค์จ์ด ํ์ฉ
- ํ์ ์์ ์ฑ, ๋ณต์กํ ํ๋ก์ฐ ์ ์ด
- ๊ธฐ์กด ์ฝ๋๊ฐ Redux ๊ธฐ๋ฐ์ผ ๊ฒฝ์ฐ
5. โ ์ ๋ฆฌํ๋ฉด?
- Tanstack Query → ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ๋ ๋ฌด์กฐ๊ฑด ๊ณ ๋ ค
- Zustand → ๋น ๋ฅด๊ณ ๊ฐ๋จํ๊ฒ UI ์ํ ๊ด๋ฆฌ
- Redux → ๋ณต์กํ ๊ตฌ์กฐ/ํ์์ ์ฌ์ ํ ์ธ๋ชจ ์์
๐ก ๊ฒฐ๋ก
์ํ ๊ด๋ฆฌ๋ “ํ๋๋ก ๋ค ์ฒ๋ฆฌํ๋ ๊ฒ ์๋๋ผ”, ์ํฉ์ ๋ง๊ฒ ๋๋ ์จ์ผํ๋ค.
๋ถํ์ํ ์ค๋ณต ์ํ๋ฅผ ์ค์ด๊ณ , ๋๊ตฌ์ ๋ง๋ ์ญํ ๋ง ๋งก๊ธฐ๋ฉด ์ ์ง๋ณด์๋ ํจ์ฌ ์ฌ์์ง ๊ฒ.
โ Tanstack Query → ์๋ฒ ์ํ
โ Zustand/Redux → UI ์ํ