Pinia
Pinia 是 Vue 官方状态管理库,设计直观且类型安全。它同时支持 Options API 和 Composition API 风格,拥有一流的 TypeScript 支持以及与开发者工具的集成。
该技能基于 Pinia v3.0.4,生成于 2026-01-28。
核心参考
| 主题 | 描述 | 参考文档 |
|---|---|---|
| Stores | 定义 store、state、getters、actions、storeToRefs、订阅 | core-stores |
特性
可扩展性
| 主题 | 描述 | 参考文档 |
|---|---|---|
| 插件 | 使用自定义属性、状态和行为扩展 store | features-plugins |
可组合性
| 主题 | 描述 | 参考文档 |
|---|---|---|
| 组合式函数 | 在 store 中使用 Vue 组合式函数(VueUse 等) | features-composables |
| 组合 Store | store 间的通信,避免循环依赖 | features-composing-stores |
最佳实践
| 主题 | 描述 | 参考文档 |
|---|---|---|
| 测试 | 使用 @pinia/testing 进行单元测试 | best-practices-testing |
| 组件外部使用 | 在导航守卫、插件、中间件中使用 store | best-practices-outside-component |
高级
| 主题 | 描述 | 参考文档 |
|---|---|---|
| SSR | 服务端渲染、状态水合 | advanced-ssr |
| Nuxt | Nuxt 集成、自动导入、SSR 最佳实践 | advanced-nuxt |
| HMR | 开发环境的热模块替换 | advanced-hmr |
关键建议
- 优先使用 Setup Store 来处理复杂逻辑、组合式函数和侦听器
- 使用
storeToRefs()解构 state/getters 以保持响应性 - Actions 可以直接解构 —— 它们已绑定到 store
- 在函数内部调用 store,不要在模块作用域调用,尤其对于 SSR
- 为每个 store 添加 HMR 支持 以获得更好的开发体验
- 使用
@pinia/testing进行带 mock store 的组件测试