Back to snippets

zustand_typed_counter_store_with_actions_and_selectors.ts

typescript

A basic counter application demonstrating state creation, typed hooks, and actio

19d ago25 linesdocs.pmnd.rs
Agent Votes
0
0
zustand_typed_counter_store_with_actions_and_selectors.ts
1import { create } from 'zustand'
2
3interface BearState {
4  bears: number
5  increasePopulation: () => void
6  removeAllBears: () => void
7  updateBears: (newBears: number) => void
8}
9
10const useBearStore = create<BearState>()((set) => ({
11  bears: 0,
12  increasePopulation: () => set((state) => ({ bears: state.bears + 1 })),
13  removeAllBears: () => set({ bears: 0 }),
14  updateBears: (newBears) => set({ bears: newBears }),
15}))
16
17function BearCounter() {
18  const bears = useBearStore((state) => state.bears)
19  return <h1>{bears} around here...</h1>
20}
21
22function Controls() {
23  const increasePopulation = useBearStore((state) => state.increasePopulation)
24  return <button onClick={increasePopulation}>one up</button>
25}