zustand-state
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseZustand State Management
Zustand 状态管理
Minimal state management - no providers, minimal boilerplate.
轻量级状态管理 - 无需提供者,极少样板代码。
Quick Reference
快速参考
typescript
import { create } from 'zustand'
interface BearState {
bears: number
increase: (by: number) => void
}
const useBearStore = create<BearState>()((set) => ({
bears: 0,
increase: (by) => set((state) => ({ bears: state.bears + by })),
}))
// In component - select only what you need
const bears = useBearStore((state) => state.bears)
const increase = useBearStore((state) => state.increase)typescript
import { create } from 'zustand'
interface BearState {
bears: number
increase: (by: number) => void
}
const useBearStore = create<BearState>()((set) => ({
bears: 0,
increase: (by) => set((state) => ({ bears: state.bears + by })),
}))
// 在组件中 - 仅选择你需要的内容
const bears = useBearStore((state) => state.bears)
const increase = useBearStore((state) => state.increase)State Updates
状态更新
typescript
// Flat updates (auto-merged at one level)
set({ bears: 5 })
set((state) => ({ bears: state.bears + 1 }))
// Nested objects (manual spread required)
set((state) => ({
nested: { ...state.nested, count: state.nested.count + 1 }
}))
// Replace entire state (no merge)
set({ bears: 0 }, true)typescript
// 扁平化更新(自动合并一级属性)
set({ bears: 5 })
set((state) => ({ bears: state.bears + 1 }))
// 嵌套对象(需要手动展开)
set((state) => ({
nested: { ...state.nested, count: state.nested.count + 1 }
}))
// 替换整个状态(不合并)
set({ bears: 0 }, true)Selectors & Performance
选择器与性能
typescript
// Good - subscribes only to bears
const bears = useBearStore((state) => state.bears)
// Bad - rerenders on any change
const state = useBearStore()
// Multiple values with useShallow (prevents rerenders with shallow comparison)
import { useShallow } from 'zustand/react/shallow'
const { bears, fish } = useBearStore(
useShallow((state) => ({ bears: state.bears, fish: state.fish }))
)
// Array destructuring also works
const [bears, fish] = useBearStore(
useShallow((state) => [state.bears, state.fish])
)typescript
// 推荐 - 仅订阅bears状态
const bears = useBearStore((state) => state.bears)
// 不推荐 - 任何状态变化都会触发重渲染
const state = useBearStore()
// 使用useShallow获取多个值(通过浅比较避免不必要的重渲染)
import { useShallow } from 'zustand/react/shallow'
const { bears, fish } = useBearStore(
useShallow((state) => ({ bears: state.bears, fish: state.fish }))
)
// 数组解构同样适用
const [bears, fish] = useBearStore(
useShallow((state) => [state.bears, state.fish])
)Access Outside Components
在组件外部访问状态
typescript
// Get current state (non-reactive)
const state = useBearStore.getState()
// Update state
useBearStore.setState({ bears: 5 })
// Subscribe to changes
const unsub = useBearStore.subscribe((state) => console.log(state))
unsub() // unsubscribetypescript
// 获取当前状态(非响应式)
const state = useBearStore.getState()
// 更新状态
useBearStore.setState({ bears: 5 })
// 订阅状态变化
const unsub = useBearStore.subscribe((state) => console.log(state))
unsub() // 取消订阅Vanilla Store (No React)
原生Store(无需React)
typescript
import { createStore } from 'zustand/vanilla'
const store = createStore((set) => ({
bears: 0,
increase: (by) => set((state) => ({ bears: state.bears + by })),
}))
store.getState().bears
store.setState({ bears: 10 })
store.subscribe((state) => console.log(state))typescript
import { createStore } from 'zustand/vanilla'
const store = createStore((set) => ({
bears: 0,
increase: (by) => set((state) => ({ bears: state.bears + by })),
}))
store.getState().bears
store.setState({ bears: 10 })
store.subscribe((state) => console.log(state))Additional Documentation
更多文档
- Middleware: See references/middleware.md for persist, devtools, immer
- Patterns: See references/patterns.md for slices, testing, best practices
- TypeScript: See references/typescript.md for advanced typing patterns
- 中间件:查看 references/middleware.md 了解persist、devtools、immer等中间件的使用
- 模式:查看 references/patterns.md 了解切片、测试、最佳实践等内容
- TypeScript:查看 references/typescript.md 了解高级类型定义模式
Key Patterns
核心模式
| Pattern | When to Use |
|---|---|
| Single selector | One piece of state needed |
| Multiple values, avoid rerenders |
| Outside React, event handlers |
| External systems, logging |
| Vanilla store | Non-React environments |
| 模式 | 使用场景 |
|---|---|
| 单个选择器 | 仅需要单一状态时 |
| 需要多个值,避免不必要的重渲染时 |
| 在React外部、事件处理程序中使用时 |
| 集成外部系统、日志记录时 |
| 原生Store | 非React环境中使用时 |