Zustand 状态管理在 MDX 中的应用
2025-08-19
Zustand 是一个小巧、快速、可扩展的状态管理解决方案。它使用简化的 flux 原理,有着基于 hooks 的舒适的 API。让我们看看如何在 MDX 中使用 Zustand 来管理复杂的应用状态。
什么是 Zustand?
Zustand 的优势:
- 轻量级:压缩后仅 2.9kB
- 无样板代码:不需要 providers、reducers 或 actions
- TypeScript 友好:完整的类型推断
- DevTools 支持:与 Redux DevTools 集成
1. 基础计数器示例
首先让我们看一个简单的计数器,展示 Zustand 的基本用法:
计数器: 0
2. 购物车应用
这个示例展示了一个完整的购物车功能,包括添加商品、删除商品、计算总价等:
购物车
商品列表
购物车为空
3. 主题管理器
使用 Zustand 管理应用主题和用户偏好:
主题管理器
当前主题:light
示例区域:根据主题变换样式
4. 实时聊天室
一个简单的聊天室,展示如何使用 Zustand 管理聊天消息:
实时聊天室
暂无消息,来说点什么吧~
5. 待办事项管理
完整的 TODO 应用,展示 CRUD 操作:
待办事项
暂无待办,添加一个吧~
共 0 项,已完成 0 项
6. 用户认证状态
模拟用户登录/登出状态管理:
用户认证状态
Zustand 的核心概念
Store 创建
const useStore = create((set) => ({
count: 0,
increment: () => set((state) => ({ count: state.count + 1 })),
decrement: () => set((state) => ({ count: state.count - 1 })),
}))
状态订阅
const count = useStore((state) => state.count)
const increment = useStore((state) => state.increment)
中间件支持
- persist:持久化状态到 localStorage
- devtools:Redux DevTools 集成
- subscribeWithSelector:选择性订阅
- immer:不可变状态更新
总结
Zustand 在 MDX 中的使用展示了现代状态管理的简洁性和强大功能:
- 简单的 API:无需复杂的设置和样板代码
- 灵活的架构:可以轻松扩展和组合
- 优秀的性能:细粒度的更新和优化
- TypeScript 支持:完整的类型安全
- 中间件生态:丰富的插件系统
通过这些示例,你可以看到 Zustand 如何简化复杂应用的状态管理,使得在 MDX 中创建交互式组件变得轻松愉快。