问题域/PD-518

Zustand 状态管理架构

Zustand State Architecture

大型 Electron 应用的 Zustand 多 Store 架构、持久化适配与项目切换协调

子问题

1.多 Store 职责划分

2.自定义 fileStorage 持久化适配器

3.partialize 选择性序列化

4.多 Store 协调切换与 rehydrate

5.三层 Storage 适配器叠加与职责分离

6.setItem 竞态条件下的跨项目数据覆盖防护

7.base64 图片数据的序列化膨胀控制

8.localStorage/IndexedDB 到文件系统的自动迁移

9.9 版本链式 schema 迁移

各项目的解法1 solutions

Signals

横向对比

维度moyin-creator
Store 数量与粒度17 个独立 store,按业务域拆分(导演/剧本/角色/素材等)
持久化策略三层 Storage 适配器:fileStorage → ProjectScoped → SplitStorage
项目隔离机制_p/{projectId}/{storeName} 文件路径物理隔离
版本迁移api-config-store 实现 v0→v9 链式 migrate,每版本独立处理
序列化优化partialize + stripBase64 过滤 data: URL,避免 100MB+ JSON
多 Store 协调project-switcher 5 步协议:路由→rehydrate×7→同步 ID
跨项目共享createSplitStorage 拆分项目数据与共享数据到不同文件
竞态防护setItem 从数据提取 projectId,不依赖全局状态

最佳实践

1.persist 中间件+自定义 storage 适配器

2.onRehydrateStorage 恢复派生状态

3.project-switcher 统一协调切换顺序

4.setItem 从序列化数据提取 projectId 而非依赖全局状态防竞态

5.partialize + stripBase64 过滤 data: URL 控制序列化体积

6.switchProject 先路由后 rehydrate 再同步 ID 的有序协议

7.hasRichData 启发式判断实现跨存储源自动迁移