What You’ll Build
You’ll create a basic counter store that demonstrates:- Setting up initial state
- Defining actions to modify state
- Using the Zustand
createfunction
import { create } from "zustand";
const useCounterStore = create((set) => ({
count: 0,
actions: {
increment: () => set((state) => ({})),
decrement: () => set((state) => ({})),
reset: () => set((state) => ({}))
},
}));
export default useCounterStore;
import { create } from "zustand";
const useCounterStore = create((set) => ({
count: 0,
actions: {
increment: () => set((state) => ({ count: state.count + 1 })),
decrement: () => set((state) => ({ count: state.count - 1 })),
reset: () => set({ count: 0 })
},
}));
export default useCounterStore;
import useCounterStore from '../store/useCounterStore';
function Counter() {
const count = useCounterStore((state) => state.count);
const { increment, decrement, reset } = useCounterStore(
(state) => state.actions
);
return (
<div>
<h1>Count: {count}</h1>
<button onClick={increment}>Increment</button>
<button onClick={decrement}>Decrement</button>
<button onClick={reset}>Reset</button>
</div>
);
}
export default Counter;
Understanding the Template
The CLI uses this template structure fromtemplates/store.js:
__STORE_NAME__: Your store name (e.g.,CounterStore)__INITIAL_STATE__: Your JSON state properties (e.g.,count: 0)__ACTIONS__: Your comma-separated actions as function stubs
Next Steps
TypeScript Store
Add type safety to your stores
Persistent Store
Save state to localStorage