---
name: vue-state
when: 'Vue状态管理, Pinia, Vuex, 全局状态, store, Vue状态, 状态共享, 跨组件通信'
scope:
  - frontend
products:
  - '*'
id: ka-pattern-vue-state
asset_kind: pattern
lifecycle_status: active
authority: supporting
routes:
  - '*'
primary_triggers:
  - Vue状态管理
  - Pinia
  - Vuex
  - 全局状态
  - store
  - Vue状态
  - 状态共享
  - 跨组件通信
priority: P2
specificity: 3
version: 1.0.0
last_reviewed: '2026-05-22'
consumes: []
emits: []
secondary_triggers: []
negative_triggers: []
type: pattern
status: active
---

## 决策规则
- 全局状态必须使用 Pinia，禁止 Vuex
- Store 必须按业务模块拆分，禁止写单一大 Store
- 组件解构 Store 必须使用 storeToRefs 保持响应性
- 组件内局部状态用 ref/reactive，禁止滥用全局 Store
- API 数据在 composable 中管理，必要时结合 Pinia 共享
- 全局状态必须使用 Pinia store，禁止使用 Vuex（已废弃）或手动 provide/inject
- Store 必须按功能模块拆分（useUserStore、useCartStore），禁止单个巨大 store
- 异步操作必须在 store actions 中处理，禁止在组件中 dispatch 再 watch
- Store 状态变更必须通过 actions，禁止在组件中直接修改 store.$state
- 持久化状态必须使用 pinia-plugin-persistedstate 插件

## 验收项
- [AC-01] 全局状态使用 Pinia
- [AC-02] Store 按业务模块拆分
- [AC-03] 组件解构 Store 使用 storeToRefs
- [AC-04] 组件内局部状态用 ref/reactive
- [AC-05] 使用 Pinia 管理
- [AC-06] Store 按模块拆分
- [AC-07] 状态通过 actions 修改
