Skip to content

Pinia

Pinia 是什么?

是 Vue3 的官方状态管理库,用于替代 Vuex ,是 Vuex 的升级版。

与 Vuex 的区别?

API 更简洁

Vuex 强制区分 同步 mutations异步 actions,而 Pinia 完全移除了 mutations。

官方文档明确规定 mutation

  • 必须是同步函数
  • 修改 state 的唯一方式

社区编码习惯,常量化管理。这是从 Flux/Redux 生态迁移过来的编码习惯。

  • 通常只更新 state ,不做多余的逻辑操作
  • mutation 名使用大写或常量,可以直观的区分 mutation 和普通方法

Vuex 更新状态需要 commit 调用 mutaition 来更新 state ,Pinia 可以直接对 state 进行修改。

TypeScript支持

Pinia 在编写时即提供完整的类型推断

模块化

Pinia 中每个 defineStore 创建的 store 天然就是独立模块,支持在 store 之间互相导入使用,没有 Vuex 中 modules 嵌套导致的命名空间和访问路径问题。

体积极小

约 1KB

Pinia 的轻量设计使其对应用性能影响极小,特别适合对加载速度敏感的项目。