ν°μ€ν 리 λ·°
π― createλ 무μμΌκΉμ?
**create**λ Zustandμμ μν(store)λ₯Ό λ§λλ ν¨μμμ.
κ°λ¨νκ² λ§νλ©΄, React μ»΄ν¬λνΈμμ μ¬μ©ν μμ μ μ₯μ(μ€ν μ΄)λ₯Ό μμ±νλ λꡬμμ.
μ¬κΈ°μ μ€μν ν€μλ:
- μν(state): νλ©΄μ νμλλ λ°μ΄ν° (μ: μ«μ, λ¬Έμμ΄, 리μ€νΈ λ±)
- μνλ₯Ό λ°κΎΈλ λ°©λ²: μνλ₯Ό μ λ°μ΄νΈνλ ν¨μ
π μμ μ΄μΌκΈ°λ‘ μ΄ν΄νκΈ°
μμμ ν΄λ³΄μΈμ! μ¬λ¬λΆμ΄ νΌμ κ°κ²λ₯Ό μ΄μνκ³ μμ΄μ. π
- μ£Όλ°©: νΌμλ₯Ό λ§λ€κ³ κ΄λ¦¬νλ κ³³
- λ©λ΄ν: μν(store)μ λλ€. μ΄λ€ μ¬λ£(λ°μ΄ν°)κ° μκ³ , 무μμ ν μ μλμ§(μν μ λ°μ΄νΈ ν¨μ)κ° μ ν μμ΄μ.
- μλ(μ»΄ν¬λνΈ): λ©λ΄νμ λ³΄κ³ νΌμλ₯Ό μ£Όλ¬Ένμ£ .
μ¬κΈ°μ **create**λ μ΄ λ©λ΄ν(μ€ν μ΄)μ λ§λλ λꡬμμ!
createλ₯Ό μ¬μ©νλ©΄ μνμ μνλ₯Ό λ°κΎΈλ λ°©λ²μ νλμ μ 리ν μ μμ΄μ.
π οΈ create κΈ°λ³Έ μ¬μ©λ²
κ°λ¨ν μΉ΄μ΄ν° μμ λ₯Ό ν΅ν΄ createλ₯Ό μ¬μ©νλ λ°©λ²μ μμλ³Όκ²μ.
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μμ μ€ν μ΄λ₯Ό λ§λλ ν¨μμ λλ€.
- set: μνλ₯Ό μ λ°μ΄νΈνλ ν¨μμμ.
- μ΄κΈ° μν: count: 0μμ μμν©λλ€.
- μν λ³κ²½ ν¨μ: increaseμ decreaseλ₯Ό ν΅ν΄ count κ°μ λ리거λ μ€μΌ μ μμ΄μ.
2. μ€ν μ΄ μ¬μ©νκΈ°
React μ»΄ν¬λνΈμμ μνμ ν¨μλ₯Ό μ¬μ©ν΄λ³Όκ²μ.
import React from "react";
import useCounterStore from "./store"; // Zustand μ€ν μ΄ κ°μ Έμ€κΈ°
function Counter() {
// Zustand μ€ν μ΄μμ μνμ ν¨μ κ°μ Έμ€κΈ°
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λ‘ μν(count)μ μνλ₯Ό λ°κΎΈλ ν¨μ(increase, decrease)λ₯Ό μ μνμ΄μ.
- μ€ν μ΄ μ¬μ©νκΈ°
- useCounterStore()λ₯Ό νΈμΆν΄μ μνμ ν¨μλ₯Ό κ°μ Έμ΅λλ€.
- μ΄ λλΆμ React μ»΄ν¬λνΈμμ μνλ₯Ό μ½κ² μ½κ³ μ λ°μ΄νΈν μ μμ΄μ.
- λ²νΌ ν΄λ¦ μ μν λ³κ²½
- increase()λ₯Ό νΈμΆνλ©΄ count κ°μ΄ 1 μ¦κ°νκ³ ,
- decrease()λ₯Ό νΈμΆνλ©΄ count κ°μ΄ 1 κ°μν΄μ.
- μνκ° λ°λλ©΄ Reactλ μλμΌλ‘ νλ©΄μ μ λ°μ΄νΈν΄μ€λλ€!
π κ²°κ³Ό
- μΉ΄μ΄νΈ κ°μ΄ νλ©΄μ νμλ©λλ€.
- λ²νΌμ ν΄λ¦ν λλ§λ€ μνκ° λ°λκ³ νλ©΄λ ν¨κ» μ λ°μ΄νΈλΌμ!
𧩠createλ₯Ό μ¬μ©ν λ μ’μ μ
- μ½λκ° κ°λ¨νκ³ μ§κ΄μ
- λͺ μ€λ§μΌλ‘ μνμ μν λ³κ²½ ν¨μλ₯Ό μ μν μ μμ΄μ.
- μνλ₯Ό μ½κ² 곡μ
- μ¬λ¬ μ»΄ν¬λνΈμμ λμΌν μνλ₯Ό μ¬μ©ν μ μμ΄μ.
- μ μ°ν μν κ΄λ¦¬
- μμ νλ‘μ νΈλΆν° ν° νλ‘μ νΈκΉμ§ λͺ¨λ μ¬μ©ν μ μμ΄μ.
π createλ₯Ό νμ©ν λ€μν μμ
- To-Do 리μ€νΈ κ΄λ¦¬
const useTodoStore = create((set) => ({
todos: [], // μ΄κΈ° μν
addTodo: (task) => set((state) => ({ todos: [...state.todos, task] })),
removeTodo: (task) =>
set((state) => ({ todos: state.todos.filter((t) => t !== task) })),
}));
2. λ‘κ·ΈμΈ μν κ΄λ¦¬
const useAuthStore = create((set) => ({
user: null,
login: (userData) => set({ user: userData }),
logout: () => set({ user: null }),
}));
π μ 리νμλ©΄!
createλ Zustandμμ μνμ μνλ₯Ό λ³κ²½νλ λ°©λ²μ μ 리ν΄μ μ μ₯μ(store)λ₯Ό λ§λλ ν¨μμμ.
React μ»΄ν¬λνΈμμ κ°λ¨νκ³ λΉ λ₯΄κ² μνλ₯Ό 곡μ νκ³ κ΄λ¦¬ν μ μμ΄μ!
'web > zustand' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
reateWithEqualityFn (1) | 2024.12.14 |
---|---|
createStore (0) | 2024.12.14 |
- Total
- Today
- Yesterday
- preconnect
- μ μ₯μ
- state
- experimental
- zustand
- Nextjs
- Store
- react hook
- flushsync
- μνκ΄λ¦¬
- usedeferredvalue
- dns-prefetch
- Props
- finddomnode
- useRef
- useinsertioneffect
- experimental_taintobjectreference
- react dom
- μΈλΆν°νΈ
- react dom hook
- μ΅μ λ°μ΄ν°
- experimental_taintuniquevalue
- useid
- component
- λ² ν
- μ€νμ
- react
- λ°μ΄ν°μ μ§
- useformstatus
- prefetchdns
μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
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 |