Для использования Toastify необходимо подключить библиотеку в проект. Существует два основных способа:
Через npm:
npm install toastify-js
И подключение в JavaScript-файле:
import Toastify from 'toastify-js'
import "toastify-js/src/toastify.css"
Через CDN:
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/toastify-js/src/toastify.min.css">
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/toastify-js"></script>
Использование CDN удобно для быстрых прототипов, npm предпочтителен для полноценного проекта с сборщиком.
Базовая структура уведомления в Toastify выглядит так:
Toastify({
text: "Привет, это уведомление!",
duration: 3000
}).showToast();
Ключевые параметры:
text — текст уведомления.duration — время отображения в миллисекундах (по
умолчанию 3000).gravity — положение по вертикали: "top"
или "bottom".position — положение по горизонтали:
"left", "center", "right".backgroundColor — цвет фона.close — добавляет кнопку закрытия уведомления.onClick — функция, вызываемая при клике на
уведомление.Toastify поддерживает гибкую кастомизацию. Можно изменять стиль через
CSS или через объект style:
Toastify({
text: "Кастомное уведомление",
duration: 4000,
style: {
background: "linear-gradient(to right, #00b09b, #96c93d)",
fontSize: "16px",
borderRadius: "8px"
}
}).showToast();
Использование style позволяет быстро изменять
визуализацию без создания отдельного CSS-класса.
Для интерактивных уведомлений применяются коллбэки:
onClick — выполняется при клике на уведомление.callback — выполняется после завершения показа
уведомления.Пример использования:
Toastify({
text: "Нажми меня!",
duration: 5000,
close: true,
onClick: function() {
console.log("Уведомление было кликнуто!");
}
}).showToast();
Можно создать функцию-обёртку для повторного использования шаблонов уведомлений:
function showToast(message, type = "info") {
let bgColor;
switch(type) {
case "success":
bgColor = "green"; break;
case "error":
bgColor = "red"; break;
case "warning":
bgColor = "orange"; break;
default:
bgColor = "blue";
}
Toastify({
text: message,
duration: 3000,
backgroundColor: bgColor,
close: true
}).showToast();
}
showToast("Операция прошла успешно", "success");
showToast("Произошла ошибка", "error");
Такой подход упрощает интеграцию уведомлений во множество мест проекта и поддерживает единый стиль.
Для асинхронных операций уведомления можно использовать в сочетании с
async/await:
async function fetchData() {
try {
let response = await fetch("https://api.example.com/data");
if (!response.ok) throw new Error("Ошибка загрузки");
let data = await response.json();
Toastify({ text: "Данные успешно загружены", backgroundColor: "green" }).showToast();
return data;
} catch (err) {
Toastify({ text: err.message, backgroundColor: "red" }).showToast();
}
}
fetchData();
Так уведомления напрямую отражают результат выполнения асинхронных задач.
Для масштабных проектов имеет смысл создать собственный модуль уведомлений, который оборачивает Toastify и предоставляет унифицированный интерфейс.
Пример реализации:
const Notification = (() => {
const defaultSettings = {
duration: 3000,
gravity: "top",
position: "right",
close: true
};
function show(message, options = {}) {
const settings = { ...defaultSettings, ...options, text: message };
Toastify(settings).showToast();
}
function success(message, options = {}) {
show(message, { ...options, backgroundColor: "green" });
}
function error(message, options = {}) {
show(message, { ...options, backgroundColor: "red" });
}
function warning(message, options = {}) {
show(message, { ...options, backgroundColor: "orange" });
}
return { show, success, error, warning };
})();
Использование:
Notification.success("Файл сохранён");
Notification.error("Ошибка при загрузке данных");
Notification.warning("Внимание! Ограничение ресурсов");
Notification.show("Информационное сообщение", { duration: 5000 });
Такой подход обеспечивает:
Можно интегрировать Toastify с другими библиотеками, например, для логирования событий или динамической генерации уведомлений на основе данных API:
async function loadUsers() {
try {
let response = await fetch("https://api.example.com/users");
let users = await response.json();
users.forEach(user => {
Notification.show(`Пользователь: ${user.name}`, { backgroundColor: "#2196F3" });
});
} catch (err) {
Notification.error("Не удалось загрузить пользователей");
}
}
loadUsers();
Это позволяет строить сложные сценарии уведомлений, которые реагируют на реальные данные приложения, при этом сохраняя чистый и единый интерфейс через собственное API.