Pinia — официальный store для Vue 3. defineStore('id', { state, getters, actions }). В компоненте: const store = useUserStore().
state — реактивные данные; getters — вычисляемые из state; actions — методы (async допустим). storeToRefs сохраняет реактивность при деструктуризации.
Pinia проще Vuex: нет mutations, лучше TypeScript, devtools поддержка.
export const useCartStore = defineStore('cart', {
state: () => ({ items: [] }),
getters: { total: (s) => s.items.length },
actions: { add(item) { this.items.push(item) } },
})const cart = useCartStore()
cart.add(product)Книга, игра и упражнения доступны без регистрации. Видеоуроки — после оплаты курса.