Skip to content
目录

Pinia 核心架构概述

Pinia 是 Vue 3 官方推荐的全局状态库,替代 Vuex 4。核心:无 mutations、扁平多 store、Vue 响应式原生、TypeScript 友好


1. 与 Vuex 对比

Vuex 4Pinia
变更commit mutation + dispatch action直接改 state 或 action 里改
结构嵌套 modules + namespace多个独立 defineStore
TS类型需额外封装defineStore 推断
体积/心智较重更轻

2. 核心概念

概念说明
Pinia 实例createPinia() + app.use(pinia)
StoredefineStore(id, options | setup)
Statestate: () => ({}),响应式
Getters等同 computed
Actions可 async,可改 state
$patch / $subscribe批量更新、监听

3. 架构示意

mermaid
flowchart TB
  App[Vue App] --> P[Pinia 实例]
  P --> S1[useUserStore]
  P --> S2[useCartStore]
  S1 --> C1[组件 A]
  S2 --> C2[组件 B]

每个 store 以 id 注册在 pinia._s(Map)中;同 id 单例。


4. 两种定义 Store

OptionsSetup
state / getters / actions() => { ref; computed; function }
迁移 Vuex 友好组合式 API 友好

详见 02-Store实现机制


5. 响应式

基于 Vue 3 reactive / ref;组件用 storeToRefs 解构保响应式。见 03


6. 插件与 SSR

  • 插件pinia.use(plugin) 扩展 store(持久化等)→ 05
  • SSR:每请求独立 pinia + 序列化 state06

7. 总结

Pinia = Vue 官方态管理 + 去 mutations + 多 store 组合。读源码从 createPiniacreateOptionsStore / setup store 入口即可。

MIT License.