前端开发
在 Vue 应用中使用 Pinia 管理全局状态时,解决…
适用于 Vue/Pinia 项目需要按官方最佳实践定义、扩展、组合、测试和部署 stores 的场景。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
在 Vue 应用中使用 Pinia 管理特定
解决思路
- 编写 store 时可使用 Options API 或 Composition API 风格,并利用 TypeScript 类型安全与 devtools 集成。
- 定义 stores 时覆盖状态、getters、actions,并使用 storeToRefs 与订阅(参考 references/core-stores.md)。
- 通过插件扩展 store 的自定义属性、状态和行为(参考 references/features-plugins.md)。
- 在 store 内使用 Vue composables,例如 VueUse 等(参考 references/features-composables.md)。
- 实现 store 间通信,并避免循环依赖(参考 references/features-composing-stores.md)。
- 使用 @pinia/testing 进行单元测试,对 store 进行 mock、stub(参考 references/best-practices-testing.md)。
- 在组件外使用 stores,例如导航守卫、插件、中间件(参考 references/best-practices-outside-component.md)。
- 实现 SSR 服务端渲染与状态 hydration(参考 references/advanced-ssr.md)。
- 进行 Nuxt 集成、auto-imports,并遵循 SSR best practices(参考 references/advanced-nuxt.md)。
- 为开发环境添加 HMR 支持(参考 references/advanced-hmr.md)。
- 对复杂逻辑、composables 和 watchers,优先使用 Setup Stores。
- 解构状态/getters 时使用 storeToRefs(),以保持响应性。
- actions 可以直接解构,因为它们已绑定到 store。
- 在函数内部调用 stores,而不是在模块作用域调用,尤其在 SSR 场景。
- 为每个 store 添加 HMR 支持,以改善开发体验。
- 在组件测试中使用 @pinia/testing,并 mock stores。
适用边界 · 注意事项
- 非 Vue 项目或未使用 Pinia 的项目不适用。
- 只需要组件局部状态、无需全局共享状态时,不必引入 Pinia。
- 项目已确定使用其他状态管理库且不计划迁移时,不适用。