ํฐ์คํ ๋ฆฌ ๋ทฐ
๐ฏ createStore๋ ๋ฌด์์ผ๊น์?
**createStore**๋ Zustand์์ ์ํ๋ฅผ ๋ง๋ค๊ณ ๊ด๋ฆฌํ๋ ํจ์์์.
์ฝ๊ฒ ๋งํ๋ฉด, "์ฑ์ ์ํ๋ฅผ ์ ์ฅํ ์ ์๋ ์์ ์ฐฝ๊ณ (์คํ ์ด)๋ฅผ ๋ง๋๋ ๋๊ตฌ"์์.
React ์ฑ์์๋ ์ฌ๋ฌ ์ปดํฌ๋ํธ๊ฐ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ๋, ์ด ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ ์ค์ ์ ์ฅ์๊ฐ ํ์ํ์ฃ ?
Zustand์ **createStore**๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋จํ๊ณ ๊น๋ํ๊ฒ ์ํ ๊ด๋ฆฌ๋ฅผ ํ ์ ์์ด์!
๐ ์ค์ํ ๋น์ : ์ํ ๊ด๋ฆฌ ์ฐฝ๊ณ
์ฌ๋ฌ๋ถ์ด ์์ ํ๋ฒ๊ฑฐ ๊ฐ๊ฒ๋ฅผ ์ด์ํ๋ค๊ณ ์๊ฐํด ๋ณผ๊ฒ์. ๐
- ๊ฐ๊ฒ ์์๋ ์ฌ๋ฃ(์ํ)๊ฐ ํ์ํด์. ์๋ฅผ ๋ค๋ฉด ๋นต, ํจํฐ, ์น์ฆ๊ฐ ์๊ฒ ์ฃ ?
- ์ด ์ฌ๋ฃ๋ค์ ์ด๋์ ์ ์ฅํ ๊น์? **๋์ฅ๊ณ (์ ์ฅ์)**์ ๋ณด๊ดํ๋ฉด ํธ๋ฆฌํ๊ฒ ์ฃ .
- ์ง์๋ค์ ์ธ์ ๋ ์ง ๋์ฅ๊ณ ์ ๊ฐ์ ํ์ํ ์ฌ๋ฃ๋ฅผ ๊บผ๋ด ์ฌ์ฉํ ์ ์์ด์.
์ด ๋น์ ์์:
- ๋์ฅ๊ณ → Zustand์ createStore๋ก ๋ง๋ ์ํ ์ ์ฅ์
- ์ฌ๋ฃ → ์ฐ๋ฆฌ๊ฐ ๊ด๋ฆฌํด์ผ ํ ์ํ
- ์ง์(์ปดํฌ๋ํธ) → ์ํ๋ฅผ ๊บผ๋ด์ ์ฌ์ฉํ๊ฑฐ๋ ๋ณ๊ฒฝํ๋ React ์ปดํฌ๋ํธ
๐ ๏ธ createStore ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
๊ฐ๋จํ ์นด์ดํฐ ์์ ๋ฅผ ํตํด createStore๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์์๋ณผ๊ฒ์!
1. Zustand ์คํ ์ด ๋ง๋ค๊ธฐ
import { create } from "zustand";
// Zustand ์คํ ์ด ๋ง๋ค๊ธฐ
const useCounterStore = create((set) => ({
count: 0, // ์ด๊ธฐ ์ํ
increase: () => set((state) => ({ count: state.count + 1 })), // ์ํ ์
๋ฐ์ดํธ ํจ์
decrease: () => set((state) => ({ count: state.count - 1 })), // ์ํ ์
๋ฐ์ดํธ ํจ์
}));
์ค๋ช :
- create: Zustand์์ createStore๋ฅผ ๋ง๋๋ ํจ์์ ๋๋ค.
- set: ์ํ๋ฅผ ์ ๋ฐ์ดํธํ ๋ ์ฌ์ฉํ๋ ํจ์์์.
- count: ์คํ ์ด์ ์ ์ฅํ ์ด๊ธฐ ์ํ ๊ฐ์ ๋๋ค.
- increase์ decrease: ์ํ๋ฅผ ๋ณ๊ฒฝํ๋ ํจ์์ ๋๋ค.
2. ์คํ ์ด ์ฌ์ฉํ๊ธฐ
์ด์ ๋ง๋ ์คํ ์ด๋ฅผ React ์ปดํฌ๋ํธ์์ ์ฌ์ฉํด ๋ณผ๊ฒ์!
import React from "react";
import useCounterStore from "./store"; // ๋ฐฉ๊ธ ๋ง๋ Zustand ์คํ ์ด ๊ฐ์ ธ์ค๊ธฐ
function Counter() {
const { count, increase, decrease } = useCounterStore(); // ์คํ ์ด์์ ์ํ์ ํจ์๋ฅผ ๊ฐ์ ธ์์
return (
<div>
<h1>์นด์ดํฐ: {count}</h1>
<button onClick={increase}>+1 ์ฆ๊ฐ</button>
<button onClick={decrease}>-1 ๊ฐ์</button>
</div>
);
}
export default Counter;
๐ ์ฝ๋์์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋ ๊น์?
- ์คํ ์ด ๋ง๋ค๊ธฐ (create)
- useCounterStore๋ ์ํ(count)์ ์ํ๋ฅผ ๋ณ๊ฒฝํ๋ ํจ์(increase, decrease)๋ฅผ ๋ด๊ณ ์์ด์.
- ์คํ ์ด ๊ฐ์ ธ์ค๊ธฐ
- useCounterStore()๋ฅผ ์ฌ์ฉํด์ ์คํ ์ด์์ ์ํ์ ํจ์๋ค์ ๊ฐ์ ธ์ต๋๋ค.
- ์ด ๋๋ถ์ React ์ปดํฌ๋ํธ์์ ์ฝ๊ฒ ์ํ๋ฅผ ์ฝ๊ณ ๋ณ๊ฒฝํ ์ ์์ด์.
- ๋ฒํผ ํด๋ฆญ
- increase ํจ์๋ decrease ํจ์๋ฅผ ํธ์ถํ๋ฉด ์ํ(count)๊ฐ ๋ฐ๋๊ณ , ํ๋ฉด์ด ์ ๋ฐ์ดํธ๋ฉ๋๋ค.
๐ Zustand์ ์ฅ์
- ๊ฐ๋จํ๊ณ ์ง๊ด์
- ๋ณต์กํ ์ค์ ์์ด ์ฝ๋ ๋ช ์ค๋ก ์ํ๋ฅผ ๋ง๋ค๊ณ ๊ด๋ฆฌํ ์ ์์ด์.
- React ์ปดํฌ๋ํธ ์ด๋์๋ ์ฌ์ฉ ๊ฐ๋ฅ
- Zustand ์คํ ์ด๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ๋ฌ ์ปดํฌ๋ํธ์์ ๊ฐ์ ์ํ๋ฅผ ์ฝ๊ฒ ๊ณต์ ํ ์ ์์ด์.
- ๋น ๋ฅธ ์ฑ๋ฅ
- ์ํ๊ฐ ๋ณ๊ฒฝ๋ ๋ ๊ด๋ จ๋ ์ปดํฌ๋ํธ๋ง ์ ๋ฐ์ดํธ๋๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ๋ ์ข์์!
๐ ๋ค๋ฅธ ๋น์ : ๋ฉ๋ดํ๊ณผ ์ง์
Zustand๋ฅผ ๋ค์ ํ๋ฒ๊ฑฐ ๊ฐ๊ฒ ๋น์ ๋ก ๋์๊ฐ ๋ณผ๊น์?
- createStore: ๋ฉ๋ดํ์ ๋ง๋ค๊ณ "์ฌ๋ฃ(์ํ)"์ "๋ง๋๋ ๋ฐฉ๋ฒ(ํจ์)"์ ์ ๋ฆฌํด๋ก๋๋ค.
- React ์ปดํฌ๋ํธ: ๊ฐ๊ฒ์ ์ง์๋ค์ด ๋ฉ๋ดํ์ ๋ณด๊ณ ํ์ํ ์ํ๋ฅผ ๊ฐ์ ธ์์ ์ฌ์ฉํฉ๋๋ค.
- ์ํ ์ ๋ฐ์ดํธ: ๋ฒํผ์ ๋๋ฅด๋ฉด ์ํ๋ฅผ ๋ณ๊ฒฝํด์ ํ๋ฉด์ ์ฆ์ ๋ฐ์ํฉ๋๋ค.
์ด๋ ๊ฒ Zustand๋ ์ ๋ง ๊ฐ๋จํ๊ฒ ์ํ๋ฅผ ๋ง๋ค๊ณ ์ฌ์ฉํ ์ ์๋๋ก ๋์์ฃผ๋ ํ๋ฅญํ ๋๊ตฌ์์!
๐ ํ ์ค ์์ฝ
createStore๋ Zustand์์ ์ํ(๋ฐ์ดํฐ)๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๋ ์์ ์ ์ฅ์๋ฅผ ๋ง๋๋ ํจ์์์.
React ์ปดํฌ๋ํธ ์ด๋์๋ ์ฝ๊ฒ ์ํ๋ฅผ ๊บผ๋ด๊ณ ๋ฐ๊ฟ ์ ์๋๋ก ๋์์ค๋๋ค.
'web > zustand' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
create (0) | 2024.12.14 |
---|---|
reateWithEqualityFn (1) | 2024.12.14 |
- Total
- Today
- Yesterday
- prefetchdns
- react hook
- ์ ์ฅ์
- component
- experimental_taintuniquevalue
- preconnect
- Props
- react dom
- Store
- experimental
- ์ธ๋ถํฐํธ
- ๋ฐ์ดํฐ์ ์ง
- useformstatus
- react dom hook
- finddomnode
- flushsync
- usedeferredvalue
- Nextjs
- useinsertioneffect
- useid
- ๋ฒ ํ
- react
- ์คํ์
- experimental_taintobjectreference
- useRef
- state
- ์ต์ ๋ฐ์ดํฐ
- ์ํ๊ด๋ฆฌ
- zustand
- dns-prefetch
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |