2.0 KiB
Импорт функции defineStore из библиотеки pinia для создания хранилища:
import { defineStore } from 'pinia'
Импорт типа User из файла с типами '@/types':
import { User } from '@/types'
Определение типа состояния для хранилища auth:
type authState = {
currentUser: User | undefined;
};
В этом блоке определяется тип authState, который представляет состояние хранилища. currentUser может быть типа User или undefined.
Начальное состояние хранилища:
const defaultState: authState = {
currentUser: undefined,
};
Здесь устанавливается начальное состояние хранилища authStore, в котором currentUser равен undefined.
Экспорт хранилища authStore с использованием defineStore:
export const authStore = defineStore({
id: 'auth',
state: () => defaultState,
getters: {
isAuthenticated: (state) => state.currentUser !== undefined,
jwtToken: (state) => state.currentUser?.token,
},
actions: {
signIn(user: User) {
this.currentUser = user;
},
signOut() {
this.currentUser = undefined;
},
},
persist: true,
});
Здесь мы используем defineStore для создания хранилища authStore с определенными состоянием (state), геттерами (getters) для проверки аутентификации и получения токена, а также с действиями (actions) для входа и выхода пользователя. Флаг persist: true указывает, что состояние хранилища должно сохраняться между перезагрузками страницы.