ํ์์ฑ
Web application์ ์ ์ํ๋ฉด์, Store(์ํ)๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ ๋งค์ฐ ์ค์ํด์ก์ต๋๋ค. ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก Recoil ์ญ์ ํ๋ฅญํ์ง๋ง, ์ด๋ฒ ์ฐจ๋ก์์๋ Zustand๋ฅผ ํ์ตํด๋ณด๊ณ ์ ํฉ๋๋ค. ๊ทธ ํ์ต์ ์์ํฉ๋๋ค.
์ ๊ทผ
1. Installation (์ค์น)
- npm install zustand
2. Store ์์ฑํ๊ธฐ
3. ์ปดํฌ๋ํธ ๋ฐ์ธ๋ฉ
๋ฐฉ๋ฒ
1. Installation (์ค์น)
(NextJS ๋๋ React ํ๋ก์ ํธ๋ฅผ ์์ฑ ํ ์งํํฉ๋๋ค.)
์ฌ์ฉ์ ์ํด npm ํจํค์ง๋ก ์ค์น๋ถํฐ ์งํํฉ๋๋ค.
# npm
npm install zustand
- ์ดํ ์ ์์ ์ผ๋ก ์ค์น๊ฐ ๋์๋ค๋ฉด, ํ๋ก์ ํธ ๋ด package.json ํ์ผ > "dependencies"์ ๋์ด๋จ์ ํ์ธํ ์ ์์ต๋๋ค.
2. Store ์์ฑํ๊ธฐ
- Store๋ฅผ ์์ฑํฉ๋๋ค. (Store๋ Hooks์ ๋๋ค.)
- ๋ด๋ถ์๋ primitives, objects, functions ๋ฑ ๋ฌด์์ด๋ ๋ฃ์ ์ ์์ต๋๋ค.
- ํจ์ "set"์ ์ํ๋ฅผ ๋ณํฉํฉ๋๋ค.
import { create } from 'zustand'
const useStore = create((set) => ({
bears: 0,
increasePopulation: () => set((state) => ({ bears: state.bears + 1 })),
removeAllBears: () => set({ bears: 0 }),
}))
3. ์ปดํฌ๋ํธ ๋ฐ์ธ๋ฉ
- ๊ณต๊ธ์๊ฐ ์์ด๋ ์ด๋์์๋ hooks๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์ํ๋ฅผ ์ ํํ๋ฉด ํด๋น ์ํ๊ฐ ๋ณ๊ฒฝ๋ ๋ ์๋น ๊ตฌ์ฑ ์์๊ฐ ๋ค์ ๋ ๋๋ง๋ฉ๋๋ค.
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 ํ์ต์ ์์ํด๋ดค์ต๋๋ค.
์ถ๊ฐ ์ง๋ฌธ์ ๋๊ธ์ ๋ฌ์์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค^^!
์ค๋๋ ํ์ดํ ์ ๋๋ค!
๋๊ธ