Skip to main content

Чому Pinia замінює Vuex в екосистемі Vue3?

Ключові причини, чому Pinia замінює Vuex


1. Vuex застарів концептуально (mutations більше не потрібні)

Vuex → зміни стану відбуваються через mutations, які:

  • створюють багато boilerplate
  • погано працюють з TypeScript
  • ускладнюють читабельність
  • змушують писати те саме кілька разів

Pinia → mutations немає. Є лише:

  • state
  • getters
  • actions (у них можна змінювати стан напряму)
js
this.count++ // валідно в Pinia

→ Код простіший → Менше шарів → Менше файлів → Швидше розуміти


2. Composition API як основа Pinia

Vue 3 повністю орієнтований на setup() і ref/reactive. Vuex був створений для Vue 2 - до появи Composition API.

Pinia:

  • використовує Composition API під капотом
  • відчувається як нативна частина Vue 3
  • легко інтегрується з composable-функціями
  • зменшує поріг входу

Vuex погано вписувався в нову парадигму.


3. Ідеальна підтримка TypeScript

Vuex з TypeScript → біль: потрібно вручну писати типи для:

  • state
  • mutations
  • actions
  • context

У Pinia типи:

  • виводяться автоматично
  • працюють "із коробки"
  • не потребують кастомних хаків

Це робило Pinia пріоритетним вибором для сучасних проєктів.


4. Менше boilerplate, чистіша архітектура

Приклад Vuex:

js
mutations: { increment(state) { state.count++ } }, actions: { increment({ commit }) { commit('increment') } }

Pinia:

js
actions: { increment() { this.count++ } }

Різниця очевидна. Pinia значно простіша, особливо у великих проєктах.


5. Сумісність і готовність до SSR (Nuxt 3)

Nuxt 3 обрав Pinia як стандартний стор, а не Vuex. Це автоматично закріпило її як дефолтний state manager в екосистемі Vue 3.

SSR у Pinia:

  • легше налаштовується
  • немає проблем із синглтонами
  • стор створюється на кожен запит коректно

Vuex → SSR складніший.


6. HMR: автоматичне оновлення стора

Pinia підтримує HMR:

  • стор оновлюється без перезавантаження сторінки
  • стан зберігається

Vuex цього не вмів або потребував ручних патчів.


7. Простіша система плагінів Pinia

Плагіни в Pinia:

  • декларативні
  • компактні
  • легко інтегровані

Чудово підходить для:

  • localStorage persistence
  • логування
  • аналітики

Vuex → складніше, більше boilerplate.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.