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` указывает, что состояние хранилища должно сохраняться между перезагрузками страницы.
|
||||
50
FRONTEND/STORE/UI.TS.md
Normal file
50
FRONTEND/STORE/UI.TS.md
Normal file
@@ -0,0 +1,50 @@
|
||||
**Импорт функции defineStore из библиотеки pinia для создания хранилища**:
|
||||
```
|
||||
import { defineStore } from 'pinia';
|
||||
```
|
||||
**Определение типа данных ConfirmationModalDataType**:
|
||||
```
|
||||
type ConfirmationModalDataType = {
|
||||
text: string,
|
||||
action: () => any
|
||||
};
|
||||
```
|
||||
Здесь определяется тип данных `ConfirmationModalDataType`, который содержит текст модального окна и функцию действия при подтверждении.
|
||||
|
||||
**Определение типа состояния для хранилища ui**:
|
||||
```
|
||||
type uiState = {
|
||||
confirmationModalStatus: boolean;
|
||||
confirmationModalData: ConfirmationModalDataType | undefined;
|
||||
};
|
||||
```
|
||||
В этом блоке определяется тип состояния `uiState` для хранилища. `confirmationModalStatus` указывает на состояние модального окна (открыто или закрыто), а `confirmationModalData` содержит данные для модального окна подтверждения.
|
||||
|
||||
**Начальное состояние хранилища**:
|
||||
```
|
||||
const defaultState: uiState = {
|
||||
confirmationModalStatus: false,
|
||||
confirmationModalData: undefined,
|
||||
};
|
||||
```
|
||||
Здесь устанавливается начальное состояние хранилища `uiStore`, в котором модальное окно подтверждения изначально закрыто и данные для него не определены.
|
||||
|
||||
**Экспорт хранилища uiStore с использованием defineStore**:
|
||||
```
|
||||
export const uiStore = defineStore({
|
||||
id: 'ui',
|
||||
state: () => defaultState,
|
||||
actions: {
|
||||
openConfirmationModal(text: string, action: () => any) {
|
||||
this.confirmationModalData = { text, action };
|
||||
this.confirmationModalStatus = true;
|
||||
},
|
||||
closeConfirmationModal() {
|
||||
this.confirmationModalData = undefined;
|
||||
this.confirmationModalStatus = false;
|
||||
},
|
||||
},
|
||||
persist: true,
|
||||
});
|
||||
```
|
||||
Здесь мы используем `defineStore` для создания хранилища `uiStore` с определенным состоянием (`state`), действиями (`actions`) для открытия и закрытия модального окна подтверждения, а также флагом `persist: true`, чтобы сохранять состояние хранилища между перезагрузками страницы.
|
||||
Reference in New Issue
Block a user