-
Notifications
You must be signed in to change notification settings - Fork 0
๐์ํ ๊ด๋ฆฌ (State Management)
shlee9999 edited this page Oct 2, 2024
·
4 revisions
- ๊ฐ๊ฒฐํ๊ณ ์ง๊ด์ ์ธ API: Zustand๋ Redux์ ๋นํด ํจ์ฌ ๊ฐ๋จํ๊ณ ์ง๊ด์ ์ธ API๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ถํ์ํ ๋ณด์ผ๋ฌํ๋ ์ดํธ ์ฝ๋๊ฐ ์์ด ์ฝ๋์ ๋ณต์ก์ฑ์ด ์ค์ด๋ญ๋๋ค.
- ํ ๊ธฐ๋ฐ์ ์ฌ์ฉ๋ฒ: Zustand๋ React์ ํ ์ ๊ธฐ๋ฐ์ผ๋ก ํ๊ธฐ ๋๋ฌธ์ ํจ์ํ ์ปดํฌ๋ํธ์ ์ ์ด์ธ๋ฆฌ๋ฉฐ, ์ปค์คํ ํ ์ฒ๋ผ ์ฌ์ฉํ ์ ์์ด ์ฌ์ฌ์ฉ์ฑ์ด ๋์ต๋๋ค.
- Flux ์ํคํ ์ฒ๋ฅผ ๋ฐ๋ฅด๋ฉด์๋ ๊ฐ๋จํจ: Zustand๋ Redux์ ๋ง์ฐฌ๊ฐ์ง๋ก Flux ํจํด์ ๋ฐ๋ฅด์ง๋ง, ํจ์ฌ ๊ฐ๋ณ๊ณ ๊ฐ๋จํฉ๋๋ค. ๋จ์ผ ์คํ ์ด์์ ์ํ๋ฅผ ๊ด๋ฆฌํ๊ธฐ์ ์ํ ๊ด๋ฆฌ๊ฐ ์ง๊ด์ ์ ๋๋ค.
- ๋ฌ๋ ์ปค๋ธ๊ฐ ๋ฎ์: Redux์ ๋นํด Zustand๋ ๋งค์ฐ ๊ฐ๋จํ ์ฌ์ฉ๋ฒ์ ๊ฐ์ง๊ณ ์์ด ํ์ต์ด ์ฝ๊ณ , ํ๋ก์ ํธ์ ๋น ๋ฅด๊ฒ ์ ์ฉํ ์ ์์ต๋๋ค.
- ์ ์ ์ธ๊ธฐ๊ฐ ๋์์ง๋ ์ถ์ธ: Zustand๋ ์ต๊ทผ React ์ํ๊ณ์์ ๊ธ๋ถ์ํ๊ณ ์๋ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ํ๋๋ก, ์ ์ ๋ ๋ง์ ์ฌ์ฉ์๋ฅผ ํ๋ณดํ๊ณ ์์ต๋๋ค.
-
์คํ ์ด ์์ฑํ๊ธฐ:
-
create
ย ํจ์๋ฅผ ์ด์ฉํด ์คํ ์ด๋ฅผ ์์ฑํฉ๋๋ค. -
์คํ ์ด ๋ด๋ถ์๋ ์ํ์ ์ํ๋ฅผ ๋ณ๊ฒฝํ๋ ํจ์๋ฅผ ์ ์ํฉ๋๋ค.
import { create } from 'zustand' const useStore = create((set) => ({ bears: 0, increasePopulation: () => set((state) => ({ bears: state.bears + 1 })), removeAllBears: () => set({ bears: 0 }), }))
-
-
์ปดํฌ๋ํธ์์ ์คํ ์ด ์ฌ์ฉํ๊ธฐ:
-
์์ฑํ ์คํ ์ด๋ฅผ ํ ์ฒ๋ผ ์ฌ์ฉํ์ฌ ์ํ์ ํจ์๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
-
์ํ๋ฅผ ๊ตฌ๋ ํ๋ ์ปดํฌ๋ํธ๋ ํด๋น ์ํ๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์๋์ผ๋ก ๋ฆฌ๋ ๋๋ง ๋ฉ๋๋ค.
function BearCounter() { const bears = useStore((state) => state.bears) return <h1>{bears} around here ...</h1> } function Controls() { const increasePopulation = useStore((state) => state.increasePopulation) return <button onClick={increasePopulation}>one up</button> }
-
์ด์ฒ๋ผ Zustand๋ Redux์ ๋ณต์ก์ฑ์ ๊ฐ์ ํ๋ฉด์๋ Flux ์ํคํ ์ฒ์ ์ฅ์ ์ ๊ฐ์ง๊ณ ์์ด, ๊ฐ๋จํ๊ณ ํจ์จ์ ์ธ ์ ์ญ ์ํ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. React ํ๋ก์ ํธ์์ Zustand๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ์ฝ๊ณ ์ง๊ด์ ์ผ๋ก ์ํ๋ฅผ ๊ด๋ฆฌํ ์ ์์ ๊ฒ์ ๋๋ค.