2.6 KiB
Импорт функции 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, чтобы сохранять состояние хранилища между перезагрузками страницы.