Toastify — это легкая и гибкая библиотека для отображения уведомлений в веб-приложениях на JavaScript. В контексте обработки ошибок пользователей она позволяет информировать о некорректных действиях, недопустимых вводах и других проблемах без перегрузки интерфейса модальными окнами.
Для начала работы с Toastify необходимо подключить библиотеку через CDN или npm. Пример подключения через npm:
import Toastify from 'toastify-js';
import "toastify-js/src/toastify.css";
Создание простого уведомления выполняется следующим образом:
Toastify({
text: "Произошла ошибка при отправке формы",
duration: 3000,
gravity: "top", // "top" или "bottom"
position: "right", // "left", "center", "right"
backgroundColor: "#FF5F5F",
close: true
}).showToast();
Ключевые параметры:
text — текст уведомления;duration — длительность показа в миллисекундах;gravity — положение по вертикали;position — положение по горизонтали;backgroundColor — цвет фона уведомления;close — возможность закрыть уведомление вручную.Ошибки в формах — наиболее частый источник уведомлений. Валидация может быть выполнена как на клиентской стороне, так и на сервере. Пример использования Toastify при клиентской валидации:
const emailInput = document.querySelector("#email");
const submitBtn = document.querySelector("#submit-btn");
submitBtn.addEventListener("click", (e) => {
e.preventDefault();
if (!emailInput.value.includes("@")) {
Toastify({
text: "Введите корректный email",
duration: 4000,
backgroundColor: "#FF6B6B",
close: true
}).showToast();
}
});
Сетевые запросы часто сопровождаются ошибками: от таймаутов до отказа сервера. Toastify позволяет визуально уведомлять пользователя о проблемах.
fetch("/api/data")
.then(response => {
if (!response.ok) {
throw new Error("Сервер вернул ошибку " + response.status);
}
return response.json();
})
.catch(error => {
Toastify({
text: `Ошибка загрузки данных: ${error.message}`,
duration: 5000,
backgroundColor: "#FF4C4C",
close: true
}).showToast();
});
Toastify позволяет гибко настраивать визуальный стиль уведомлений:
backgroundColor — простой цвет фона;className — кастомный CSS-класс для сложной
стилизации;style — объект с CSS-свойствами прямо в настройках
уведомления;stopOnFocus — флаг, при котором уведомление не исчезает
при наведении мыши.Пример кастомного стиля:
Toastify({
text: "Некорректный пароль",
duration: 4000,
close: true,
style: {
background: "linear-gradient(to right, #ff6b6b, #f06595)",
color: "#fff",
fontWeight: "bold"
}
}).showToast();
При возникновении нескольких ошибок подряд важно избежать наложения
уведомлений. Toastify автоматически позиционирует новые тосты, но для
контроля можно использовать offset:
Toastify({
text: "Ошибка 1",
duration: 3000,
gravity: "top",
position: "right",
offset: { x: 50, y: 50 }
}).showToast();
Toastify({
text: "Ошибка 2",
duration: 3000,
gravity: "top",
position: "right",
offset: { x: 50, y: 120 }
}).showToast();
Toastify поддерживает действия по клику на уведомление. Это удобно для предоставления пользователю возможности исправить ошибку или перейти к дополнительной информации:
Toastify({
text: "Ошибка загрузки файла. Нажмите для повторной попытки",
duration: 5000,
backgroundColor: "#FF4C4C",
close: true,
onClick: () => {
retryUpload();
}
}).showToast();
Асинхронные функции — частый источник ошибок. Toastify позволяет эффективно уведомлять пользователя без блокировки интерфейса:
async function submitForm(data) {
try {
const response = await fetch("/api/submit", { method: "POST", body: JSON.stringify(data) });
if (!response.ok) {
throw new Error("Ошибка сервера: " + response.statusText);
}
Toastify({
text: "Форма успешно отправлена",
duration: 3000,
backgroundColor: "#4CAF50",
close: true
}).showToast();
} catch (error) {
Toastify({
text: `Не удалось отправить форму: ${error.message}`,
duration: 5000,
backgroundColor: "#FF4C4C",
close: true
}).showToast();
}
}
Помимо визуального уведомления, полезно логировать ошибки в консоль или отправлять на сервер для анализа:
.catch(error => {
console.error(error);
Toastify({
text: "Произошла ошибка, подробности в консоли",
duration: 4000,
backgroundColor: "#FF6B6B",
close: true
}).showToast();
});
Это позволяет разработчикам видеть детали ошибки, не перегружая пользователя технической информацией.
Эти подходы делают Toastify универсальным инструментом для обработки ошибок пользователей, сочетая простоту уведомлений и гибкость настройки интерфейса.