Message Box — это мощный компонент библиотеки Element Plus для отображения модальных диалогов с интерактивными сообщениями. Он позволяет выводить уведомления, запросы подтверждения, формы ввода и кастомные диалоги, обеспечивая высокий уровень взаимодействия с пользователем.
Для работы с Message Box необходимо импортировать соответствующий модуль из Element Plus:
import { ElMessageBox } from 'element-plus';
Базовый синтаксис вызова модального окна:
ElMessageBox('Текст сообщения', 'Заголовок', {
confirmButtonText: 'OK',
cancelButtonText: 'Отмена',
type: 'warning'
}).then(() => {
console.log('Подтверждено');
}).catch(() => {
console.log('Отменено');
});
Ключевые моменты:
ElMessageBox возвращает Promise, что
позволяет обрабатывать действия пользователя через .then()
и .catch().type может принимать значения:
success, warning, info,
error.confirmButtonText и cancelButtonText
задают подписи кнопок.Element Plus предоставляет несколько методов для упрощённого использования Message Box:
alertИспользуется для отображения простого сообщения с одной кнопкой подтверждения.
ElMessageBox.alert('Это важное уведомление', 'Внимание', {
confirmButtonText: 'Понятно',
type: 'info'
});
Особенности:
confirmИспользуется для запросов подтверждения с двумя кнопками: подтверждение и отмена.
ElMessageBox.confirm('Вы уверены, что хотите удалить элемент?', 'Подтверждение', {
confirmButtonText: 'Да',
cancelButtonText: 'Нет',
type: 'warning'
}).then(() => {
console.log('Элемент удалён');
}).catch(() => {
console.log('Удаление отменено');
});
Особенности:
promptИспользуется для запроса ввода от пользователя через поле ввода внутри модального окна.
ElMessageBox.prompt('Введите своё имя', 'Регистрация', {
confirmButtonText: 'Сохранить',
cancelButtonText: 'Отмена',
inputPattern: /^[a-zA-Z]+$/,
inputErrorMessage: 'Только латинские буквы'
}).then(({ value }) => {
console.log('Введено:', value);
}).catch(() => {
console.log('Ввод отменён');
});
Особенности:
inputPattern позволяет задать регулярное выражение для
валидации ввода.inputErrorMessage показывает сообщение об ошибке, если
ввод не соответствует шаблону.value, содержащим введённый
текст.Message Box поддерживает широкие возможности кастомизации через опции:
lockScroll — блокирует прокрутку страницы при открытом
модальном окне.closeOnClickModal — закрытие окна при клике на
затемнённый фон.closeOnPressEscape — закрытие окна при нажатии клавиши
Esc.showClose — отображение кнопки закрытия в правом
верхнем углу.center — выравнивание заголовка по центру.Пример:
ElMessageBox.confirm('Вы уверены?', 'Удаление', {
confirmButtonText: 'Да',
cancelButtonText: 'Нет',
type: 'error',
lockScroll: true,
closeOnClickModal: false,
center: true
});
Message Box можно закрыть программно с помощью методов:
import { ElMessageBox } from 'element-plus';
const msgBox = ElMessageBox.confirm('Сообщение', 'Заголовок');
msgBox.close(); // Закрывает окно вручную
Также можно использовать глобальный метод закрытия всех окон:
ElMessageBox.closeAll();
Благодаря возвращаемому Promise, Message Box отлично интегрируется с асинхронным кодом:
async function deleteItem() {
try {
await ElMessageBox.confirm('Удалить этот элемент?', 'Внимание', { type: 'warning' });
await api.deleteItem();
ElMessage.success('Элемент успешно удалён');
} catch {
ElMessage.info('Удаление отменено');
}
}
Message Box можно использовать внутри методов компонентов Vue:
export default {
methods: {
async handleDelete() {
try {
await ElMessageBox.confirm('Точно удалить?', 'Подтверждение', { type: 'warning' });
this.items.splice(this.index, 1);
} catch {}
}
}
};
Это позволяет создавать динамичные интерфейсы с модальными диалогами, управляемыми состоянием компонента.
Message Box позволяет вставлять свои Vue-компоненты для сложных интерфейсов:
import CustomForm from './CustomForm.vue';
ElMessageBox({
title: 'Заполните форму',
message: h(CustomForm, { prop1: 'value1' }),
showCancelButton: true,
confirmButtonText: 'Отправить'
});
h() используется для рендеринга Vue-компонента внутри
окна.alert, confirm и
prompt для различных сценариев.Message Box в Element Plus является универсальным инструментом для реализации интерактивных диалогов, управления подтверждениями действий и сбора пользовательского ввода.