关键设计决策
Pinia 相对 Vuex 的取舍:去 mutations、扁平 store、Vue 3 响应式原生、Setup 友好。
| # | 决策 | 原因 | 代价 |
|---|---|---|---|
| 1 | 无 mutations | 减少样板;actions 即可 | 团队需自律副作用 |
| 2 | 扁平多 store | 按功能拆,无嵌套 module | 跨 store 靠组合 |
| 3 | state 用函数 | 防引用共享 | 多写 () => |
| 4 | Store 全响应式 | 与 Vue 3 一致 | 大对象需注意性能 |
| 5 | EffectScope | 卸载时清理 | 实现稍复杂 |
| 6 | Map 存 store | O(1) 按 id | — |
| 7 | Options + Setup 双 API | 迁移 + 新代码 | 文档两套 |
| 8 | markRaw 部分字段 | 非响应式大对象 | 需知 API |
| 9 | 暂停监听 | batch 更新 | 边缘 API |
| 10 | pinia.state.value SSR 单源 | 序列化一致 | — |
详见各专题章;Vuex 对比见 01。
总结
Pinia = Vue 官方推荐的轻量全局态;要 Redux 式严格日志可仍用 Vuex 4 或自建 $subscribe 审计。