140500
This commit is contained in:
45
FRONTEND/STORE/AUTH.TS.md
Normal file
45
FRONTEND/STORE/AUTH.TS.md
Normal file
@@ -0,0 +1,45 @@
|
||||
**Импорт функции 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` указывает, что состояние хранилища должно сохраняться между перезагрузками страницы.
|
||||
Reference in New Issue
Block a user