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, ๋ฌดํ ์คํฌ๋กค ๋ฐ์ดํฐ, ์ค์๊ฐ ์๋ฒ ๋ฐ์ดํฐ ๋ฑ ์๋ฒ ๋ฐ์ดํฐ ๋๊ธฐํ์ ์ต์
ย
ย
์ฐจ์ด์ ์์ฝ
ย
๊ตฌ๋ถ | Zustand | React Query |
๋ชฉ์ | ํด๋ผ์ด์ธํธ ์ ์ญ ์ํ ๊ด๋ฆฌ | ์๋ฒ ์ํ ๊ด๋ฆฌ (API ์์ฒญ, ์บ์ฑ) |
๋ฐ์ดํฐ ์์ค | ๋ก์ปฌ/ํด๋ผ์ด์ธํธ ์ค์ฌ | ์๋ฒ/์ธ๋ถ API ์ค์ฌ |
์ฅ์ | ๋จ์, ๊ฐ๋ณ๊ณ ๋น ๋ฆ | ์๋ ์บ์ฑ, ๋๊ธฐํ, ์ํ ๊ด๋ฆฌ |
๋จ์ | ์๋ฒ ์ํ ์ง์ ๊ด๋ฆฌ ์ด๋ ค์ | ์ ์ญ ์ํ ๊ด๋ฆฌ ๋ถ๊ฐ |
์ฌ์ฉ ์์ | ๋คํฌ๋ชจ๋, ํ ๊ธ, ๋ก๊ทธ์ธ ์ํ | ๊ฒ์๊ธ ๋ชฉ๋ก, ์ ์ ๋ฐ์ดํฐ, ๋ฌดํ์คํฌ๋กค |
- UI/๋ก์ปฌ ์ํ = Zustand
- ์๋ฒ ๋ฐ์ดํฐ = React Query