关于 pinia
面向 Vue 3 开发者的 Pinia 状态管理参考技能,按示例和 API 文档组织内容,涵盖存储、SSR、插件、测试及 Vuex 迁移。
主要功能
- 01使用 defineStore() 创建存储
- 02管理状态、getter 和 action
- 03组合式 API 与选项式 API
- 04SSR 与插件指南
- 05存储测试及 Vuex 迁移
适用场景
- 01为 Vue 3 应用添加状态管理
- 02创建或整理 Pinia 存储
- 03配置 SSR 或 Pinia 插件
- 04测试存储或从 Vuex 迁移
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ full-stack-skills/ vue-skills --skill pinia安装后在 Claude Code 中输入/pinia确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlapi/@pinia/nuxt/index.mdapi/@pinia/nuxt/interfaces/ModuleOptions.mdapi/@pinia/nuxt/variables/default.mdapi/@pinia/testing/index.mdapi/@pinia/testing/functions/createTestingPinia.mdapi/@pinia/testing/interfaces/TestingOptions.mdTestingPinia.mdapi/pinia/index.mdapi/pinia/enumerations/MutationType.mdapi/pinia/functions/acceptHMRUpdate.mdcreatePinia.mddefineStore.mddisposePinia.mdgetActivePinia.mdmapActions.mdmapState.mdmapStores.mdmapWritableState.mdsetMapStoreSuffix.mdapi/pinia/interfaces/Store.mdStoreActions.mdStoreDefinition.mdStoreGetters.mdStoreProperties.mdStoreState.mdexamples/cookbook/composables.mdcomposing-stores.mdhot-module-replacement.mdindex.md详细介绍
适用场景
在用户希望执行以下操作时,使用此技能:
- 在 Vue 3 应用中设置 Pinia 状态管理
- 使用 defineStore() 创建 store
- 使用 state、getters 和 actions
- 在组合式 API 中使用 Pinia
- 在选项式 API 中使用 Pinia
- 使用 Pinia 实现 SSR(服务器端渲染)
- 创建和使用 Pinia 插件
- 在组件中访问 store
- 在组件之间共享状态
- 使用插件持久化状态
- 测试 Pinia store
- 从 Vuex 迁移到 Pinia
如何使用此技能
此技能的组织结构与 Pinia 官方文档一致(https://pinia.vuejs.org/introduction.html、https://pinia.vuejs.org/core-concepts/、https://pinia.vuejs.org/api/)。使用 Pinia 时:
-
根据用户请求确定主题:
- Introduction/介绍 →
examples/introduction/ - Core Concepts/核心概念 →
examples/core-concepts/ - Cookbook/食谱 →
examples/cookbook/ - SSR/服务端渲染 →
examples/ssr/ - API Reference/API 参考 →
api/
- Introduction/介绍 →
-
从
examples/目录加载相应的示例文件:Introduction(介绍) -
examples/introduction/:examples/introduction/introduction.md
Core Concepts(核心概念) -
examples/core-concepts/:examples/core-concepts/actions.mdexamples/core-concepts/defining-a-store.mdexamples/core-concepts/getters.mdexamples/core-concepts/index.mdexamples/core-concepts/outside-component-usage.mdexamples/core-concepts/plugins.mdexamples/core-concepts/state.md
Cookbook(食谱) -
examples/cookbook/:examples/cookbook/composables.mdexamples/cookbook/composing-stores.mdexamples/cookbook/hot-module-replacement.mdexamples/cookbook/index.mdexamples/cookbook/migration-v1-v2.mdexamples/cookbook/migration-v2-v3.mdexamples/cookbook/migration-vuex.mdexamples/cookbook/options-api.mdexamples/cookbook/testing.mdexamples/cookbook/vscode-snippets.md
SSR(服务端渲染) -
examples/ssr/:examples/ssr/index.mdexamples/ssr/nuxt.md
-
根据需要参考
api/目录中的 API 文档:Pinia Core API -
api/pinia/:api/pinia/enumerations/MutationType.mdapi/pinia/functions/acceptHMRUpdate.mdapi/pinia/functions/createPinia.mdapi/pinia/functions/defineStore.mdapi/pinia/functions/disposePinia.mdapi/pinia/functions/getActivePinia.mdapi/pinia/functions/mapActions.mdapi/pinia/functions/mapState.mdapi/pinia/functions/mapStores.mdapi/pinia/functions/mapWritableState.mdapi/pinia/functions/setMapStoreSuffix.mdapi/pinia/index.mdapi/pinia/interfaces/Store.mdapi/pinia/interfaces/StoreActions.mdapi/pinia/interfaces/StoreDefinition.mdapi/pinia/interfaces/StoreGetters.mdapi/pinia/interfaces/StoreProperties.mdapi/pinia/interfaces/StoreState.md
@pinia/nuxt -
api/@pinia/nuxt/:api/@pinia/nuxt/index.mdapi/@pinia/nuxt/interfaces/ModuleOptions.mdapi/@pinia/nuxt/variables/default.md
@pinia/testing -
api/@pinia/testing/:api/@pinia/testing/functions/createTestingPinia.mdapi/@pinia/testing/index.mdapi/@pinia/testing/interfaces/TestingOptions.mdapi/@pinia/testing/interfaces/TestingPinia.md
-
遵循相应示例文件中有关语法、结构和最佳实践的具体说明
重要说明:
- 所有示例均遵循 Pinia 最佳实践
- 适用时,示例同时提供 JavaScript 和 TypeScript 版本
- 每个示例文件都包含参数、返回值、常见错误、最佳实践和使用场景
- 务必查看示例文件中的最佳实践和常见模式
-
根据需要参考官方文档:
- Introduction:https://pinia.vuejs.org/introduction.html
- Core Concepts:https://pinia.vuejs.org/core-concepts/
- API Reference:https://pinia.vuejs.org/api/
最佳实践
- 使用 defineStore():始终使用 defineStore() 创建存储
- 存储命名:使用描述性的存储 ID
- 状态结构:尽可能保持状态扁平且规范化
- Getter:使用 getter 获取根据状态派生的计算值
- Action:使用 action 执行异步操作和状态变更
- TypeScript:使用 TypeScript 确保类型安全
- 存储组合:将大型存储拆分为更小、更专注的存储
- SSR:使用适当的 SSR 设置进行服务端渲染
- 插件:使用插件处理横切关注点
- 测试:为存储和 action 编写测试
资源
- 官方文档:https://pinia.vuejs.org/
- 简介:https://pinia.vuejs.org/introduction.html
- 核心概念:https://pinia.vuejs.org/core-concepts/
- API 参考:https://pinia.vuejs.org/api/
- GitHub 仓库:https://github.com/vuejs/pinia
关键词
Pinia,状态管理,存储,Vue 3,Composition API,Options API,defineStore,状态,getter,action,插件,SSR,服务端渲染,TypeScript,Vuex 迁移,状态管理,存储,组合式 API,选项式 API,插件,服务端渲染,类型支持