zustand-expert 是一个面向现代 React 应用的高级状态架构技能,定位为 Zustand v5 的资深状态架构师,适用于 React 19 与 Next.js 16.1+ 项目。
用途 该技能用于指导在 Zustand v5 中设计和管理应用状态,重点覆盖三大难题:SSR 场景下的 hydration 不匹配、Next.js 中跨请求的状态泄漏,以及大型应用的状态可扩展性。
主要能力与核心优先级
- SSR 安全(反单例):在 Next.js 中通过 React Context 为每个请求创建独立 store,避免请求之间共享状态。
- Hydration 完整性:管理持久化与异步再水合,以确保低于 100ms 的 LCP 且不出现闪烁。
- 模块化可扩展:对复杂领域状态强制采用 Slices Pattern。
- 性能优化:策略性使用选择器(selectors)与 useSyncExternalStore(Zustand v5 原生)。
资料中列出的 Zustand v5(2026)主要收益
- 原生 useSyncExternalStore:完整支持 React 18/19 并发渲染,无 tearing 问题。
- 更小体积:移除旧版支持,带来更精简、更快的 bundle。
- 改进的类型安全:对组合 store 与中间件提供原生 TypeScript 支持。
- Context-Store 模式:SSR 的官方标准,用于避免用户数据泄漏。
- 手动再水合控制:通过 skipHydration: true 精细控制持久化状态何时进入 UI。
详细指南主题
- SSR 与 Next.js 16 模式(关键):Provider Pattern(基于 ref 的 store 创建)、防止单例数据泄漏、从 Server Props 初始化状态。
- Slices Pattern(高):模块化大型 store、类型安全的组合状态、在 slices 之间共享状态。
- 持久化与 Hydration(高):带 skipHydration 的 persist 中间件、schema 变更的迁移策略、处理 Next.js 中的 Hydration Mismatch。
- 中间件与不可变性(中):使用 immer 处理复杂嵌套状态、用于日志/分析的自定义中间件、使用 Vitest/Jest 测试 store。
使用方式(Do's and Don'ts 快速参考)
- 不要直接 export const useStore = create(...),应使用 StoreContext 以支持 SSR。
- 不要使用单一庞大的 store 文件,应使用 Slices Pattern。
- 不要 useStore(state => state)(整个对象),应使用原子选择器(如 state.id)。
- 不要直接修改状态,应使用 immer 中间件或函数式更新。
- 不要用 useEffect 同步 hydration,应使用带 skipHydration 的 persist。
- 不要在 RSC 中读取 store,应通过 Props 将数据传递给客户端组件。
适用场景 适合需要在 Next.js 中进行 SSR、处理持久化与再水合、并需要以模块化方式组织复杂状态的大型 React 应用开发。
限制 资料未提供该技能的具体安装命令、收费方式、价格、支持的平台细节或效果数据。