Ответ
Pinia — это более современная альтернатива Vuex, созданная для Vue 3. Основные отличия:
- Типизация — Pinia изначально поддерживает TypeScript без костылей.
- Простота — нет мутаций, только actions и state. Actions могут напрямую изменять состояние.
- Модульность — каждый store автономен, не нужен единый корневой модуль.
- Composition API — Pinia лучше интегрирован с Composition API.
Пример Pinia:
// store/counter.js
export const useCounterStore = defineStore('counter', {
state: () => ({ count: 0 }),
actions: {
increment() {
this.count++
}
}
})
Vuex требует больше бойлерплейта (mutations, actions раздельно) и менее гибок в TypeScript. Pinia легче и современнее, но Vuex пока более зрелый.