pinia
When to use this skill
Use this skill whenever the user wants to:
- Set up Pinia state management in Vue 3 applications
- Create stores with defineStore()
- Work with state, getters, and actions
- Use Pinia with Composition API
- Use Pinia with Options API
- Implement SSR (Server-Side Rendering) with Pinia
- Create and use Pinia plugins
- Access stores in components
- Share state between components
- Persist state with plugins
- Test Pinia stores
- Migrate from Vuex to Pinia
How to use this skill
This skill is organized to match the Pinia official documentation structure (https://pinia.vuejs.org/introduction.html, https://pinia.vuejs.org/core-concepts/, https://pinia.vuejs.org/api/). When working with Pinia:
-
Identify the topic from the user's request:
- Introduction/介绍 →
examples/introduction/ - Core Concepts/核心概念 →
examples/core-concepts/ - Cookbook/食谱 →
examples/cookbook/ - SSR/服务端渲染 →
examples/ssr/ - API Reference/API 参考 →
api/
- Introduction/介绍 →
-
Load the appropriate example file from the
examples/directory: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
-
Reference API documentation in the
api/directory when needed: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
-
Follow the specific instructions in that example file for syntax, structure, and best practices
Important Notes:
- All examples follow Pinia best practices
- Examples include both JavaScript and TypeScript versions where applicable
- Each example file includes parameters, returns, common errors, best practices, and scenarios
- Always check the example file for best practices and common patterns
-
Reference the official documentation when needed:
- Introduction: https://pinia.vuejs.org/introduction.html
- Core Concepts: https://pinia.vuejs.org/core-concepts/
- API Reference: https://pinia.vuejs.org/api/
Best Practices
- Use defineStore(): Always use defineStore() to create stores
- Store naming: Use descriptive store IDs
- State structure: Keep state flat and normalized when possible
- Getters: Use getters for computed values derived from state
- Actions: Use actions for async operations and mutations
- TypeScript: Use TypeScript for type safety
- Store composition: Split large stores into smaller, focused stores
- SSR: Use proper SSR setup for server-side rendering
- Plugins: Use plugins for cross-cutting concerns
- Testing: Write tests for stores and actions
Resources
- Official Documentation: https://pinia.vuejs.org/
- Introduction: https://pinia.vuejs.org/introduction.html
- Core Concepts: https://pinia.vuejs.org/core-concepts/
- API Reference: https://pinia.vuejs.org/api/
- GitHub Repository: https://github.com/vuejs/pinia
Keywords
Pinia, state management, store, Vue 3, Composition API, Options API, defineStore, state, getters, actions, plugins, SSR, server-side rendering, TypeScript, Vuex migration, 状态管理, 存储, 组合式 API, 选项式 API, 插件, 服务端渲染, 类型支持