关于 zustand
为 React 中的 Zustand 状态管理提供性能与架构指南,包含 43 条规则,涵盖 Store、选择器、更新、中间件、SSR、TypeScript 及进阶模式。
主要功能
- 01八类共 43 条规则
- 02Store 架构指导
- 03选择器与重渲染优化
- 04状态更新和中间件实践
- 05SSR 与水合指南
- 06TypeScript 与进阶模式
适用场景
- 01为 React 应用设计 Zustand Store
- 02减少组件不必要的重渲染
- 03配置持久化与中间件
- 04检查 SSR 和水合状态模式
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill zustand安装后在 Claude Code 中输入/zustand确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
metadata.jsonassets/templates/_template.mdreferences/_sections.mdadv-computed-getters.mdadv-context-stores.mdadv-third-party-integration.mdadv-transient-updates.mdmw-combine-order.mdmw-devtools-actions.mdmw-immer-nested.mdmw-persist-migration.mdmw-persist-partialize.mdmw-slice-middleware.mdrender-avoid-object-returns.mdrender-equality-fn.mdrender-memo-children.mdrender-split-components.mdrender-subscribe-external.mdrender-use-shallow.mdselect-always-use.mdselect-atomic-picks.mdselect-auto-generate.mdselect-avoid-inline.mdselect-custom-hooks.mdselect-memoize-computed.mdselect-stable-returns.mdssr-check-window.mdssr-hydration-hook.mdssr-manual-rehydrate.mdssr-skip-hydration.md详细介绍
社区版 Zustand 最佳实践
面向 React 应用中 Zustand 状态管理的全面性能与架构指南。包含 8 个类别、43 条规则,按影响程度从关键(store 架构、选择器优化)到渐进式(高级模式)排序。
适用场景
在以下情况下参考这些指南:
- 创建新的 Zustand store
- 使用选择器优化重新渲染性能
- 实现持久化或中间件
- 将 Zustand 与 SSR/Next.js 集成
- 审查状态管理模式相关代码
按优先级划分的规则类别
| 优先级 | 类别 | 影响 | 前缀 |
|---|---|---|---|
| 1 | Store 架构 | CRITICAL | store- |
| 2 | 选择器优化 | CRITICAL | select- |
| 3 | 防止重新渲染 | HIGH | render- |
| 4 | 状态更新 | MEDIUM-HIGH | update- |
| 5 | 中间件配置 | MEDIUM | mw- |
| 6 | SSR 与水合 | MEDIUM | ssr- |
| 7 | TypeScript 模式 | LOW-MEDIUM | ts- |
| 8 | 高级模式 | LOW | adv- |
快速参考
1. Store 架构(CRITICAL)
store-multiple-stores- 使用多个小型 store,而非一个庞大的 storestore-separate-actions- 在专用命名空间中将操作与状态分开store-event-naming- 将操作命名为事件,而非 setterstore-colocate-logic- 将操作与其修改的状态放在一起store-avoid-derived-state- 派生计算值,而非存储这些值store-domain-boundaries- 按功能领域组织 store
2. 选择器优化(CRITICAL)
select-always-use- 始终使用选择器,切勿订阅整个 storeselect-atomic-picks- 对单个值使用原子选择器select-stable-returns- 确保选择器返回稳定的引用select-custom-hooks- 导出自定义 Hook,而非原始 storeselect-auto-generate- 为大型 store 使用自动生成的选择器select-memoize-computed- 对开销大的计算型选择器进行记忆化select-avoid-inline- 在组件外部定义选择器
3. 防止重新渲染(HIGH)
render-use-shallow- 多属性选择时使用 useShallowrender-equality-fn- 需要时提供自定义相等函数render-memo-children- 对受父组件 store 更新影响的子组件进行记忆化render-subscribe-external- 在非 React 使用方中使用 subscriberender-avoid-object-returns- 避免让选择器返回新对象render-split-components- 拆分组件,以尽量缩小订阅范围
4. 状态更新(MEDIUM-HIGH)
update-functional-set- 根据前一个状态更新时使用函数形式update-immutable- 切勿直接修改状态update-shallow-merge- 了解 set() 的浅合并行为update-async-actions- 使用加载和错误状态处理异步操作update-batch-updates- 在单次 set 调用中批量执行相关更新
5. 中间件配置(中)
mw-devtools-actions- 为 DevTools 调试命名操作mw-persist-partialize- 使用 partialize 选择性持久化mw-persist-migration- 对持久化状态进行版本管理和迁移mw-immer-nested- 使用 immer 更新深层嵌套状态mw-combine-order- 按正确顺序应用中间件mw-slice-middleware- 在组合后的 store 层级应用中间件
6. SSR 和水合(中)
ssr-skip-hydration- 在 SSR 上下文中使用 skipHydrationssr-manual-rehydrate- 在客户端挂载时手动重新水合ssr-hydration-hook- 使用自定义 hook 防止水合不匹配ssr-check-window- 使用 typeof window 检查保护浏览器 API
7. TypeScript 模式(低-中)
ts-state-creator- 使用 StateCreator 为切片指定类型ts-middleware-inference- 在使用中间件时保留类型推断ts-separate-types- 分离状态和操作接口ts-generic-selectors- 为选择器指定类型以便复用ts-bound-store- 正确指定组合 store 的类型
8. 高级模式(低)
adv-context-stores- 将 Zustand 与 React Context 结合以实现依赖注入adv-transient-updates- 使用 subscribe 进行瞬时更新adv-computed-getters- 使用 getters 实现计算状态adv-third-party-integration- 与 React Query 和 SWR 集成
使用方法
阅读各个参考文件,了解详细说明和代码示例:
参考文件
| 文件 | 描述 |
|---|---|
| references/_sections.md | 类别定义和排序 |
| assets/templates/_template.md | 新规则模板 |
| metadata.json | 版本和参考信息 |
评论
支持 Markdown