从谁持有状态开始,不按功能清单选型。
| 场景 | 合理起点 |
|---|---|
| 一个表单或临时 UI | 局部 useState / useReducer;后代需要时用 Context 传递 |
| 已有 Redux Toolkit 和 RTK Query 应用 | 没有具体迁移理由时,保留 reducer、middleware 和服务端缓存约定 |
| 小型共享状态与显式依赖 | Zustand creator 和 selector |
| 相关业务域与具名派生值 | Pinia-React 选项式 Store、缓存 Getter 和 Action |
| SSR 或多个挂载应用 | 不论用哪种库,都需要请求快照和有作用域的实例 |
| 原始更新开销很关键 | 测量实际负载;Pinia-React 的 Immer 和追踪都有成本 |
Context 传递值,本身不提供选择性外部 Store 订阅。Redux middleware、Zustand middleware 和 Pinia 插件不能互换。更集中的对比见 Pinia-React 与 Zustand。
await 前后都一样;普通访问函数不读取 Context。成本包括调用处和测试修改、快照校验,以及实例归属审查。结算示例使用四个 Pinia Store 和一个 Zustand creator,这只是示例约定,不能证明维护成本更低。
Provider、同步持久化和可选 Redux DevTools 仍在对应页面。Setup Store、selector API、Store 热更新、异步持久化、跨标签页同步、自动 schema 迁移和独立诊断 UI 不在支持范围。实际运行边界见实例生命周期和 Action 迁移。