Zustand
Middleware és devtools
devtools/persist/immer: Redux DevTools integráció, localStorage mentés és Immer-es update szintaxis.
Middleware és devtools
Devtools
import { create } from "zustand"
import { devtools } from "zustand/middleware"
export const useCounterStore = create<CounterState>()(
devtools(
(set) => ({
count: 0,
increment: () =>
set((state) => ({ count: state.count + 1 }), false, "increment"),
}),
{ name: "CounterStore" }
)
)Persist
import { create } from "zustand"
import { persist } from "zustand/middleware"
interface ThemeState {
theme: "light" | "dark"
toggleTheme: () => void
}
export const useThemeStore = create<ThemeState>()(
persist(
(set) => ({
theme: "light",
toggleTheme: () =>
set((state) => ({ theme: state.theme === "light" ? "dark" : "light" })),
}),
{ name: "theme-storage" }
)
)Middleware-ek kombinálása
import { devtools, persist } from "zustand/middleware"
const useStore = create<State>()(
devtools(persist((set) => ({}), { name: "my-storage" }), { name: "MyStore" })
)Immer middleware
import { immer } from "zustand/middleware/immer"
const useStore = create<State>()(
immer((set) => ({
todos: [],
addTodo: (text: string) =>
set((state) => {
state.todos.push({ id: Date.now(), text, done: false })
}),
}))
)