Для работы с Toastify необходимо подключить библиотеку через CDN или пакетный менеджер. Использование через CDN требует добавления в HTML:
Через npm:
npm install toastify-js
Импорт в проекте с использованием ES6:
import Toastify from 'toastify-js';
import "toastify-js/src/toastify.css";
Библиотека предоставляет метод Toastify(options) для
создания уведомлений. Основные параметры:
3000.true/false)."top" или "bottom"."left", "center", "right".true/false).Пример создания простого уведомления:
Toastify({
text: "Успешная операция",
duration: 5000,
close: true,
gravity: "top",
position: "right",
backgroundColor: "#4CAF50",
onClick: () => console.log("Уведомление кликнуто")
}).showToast();
Toastify можно расширять с помощью плагинов, которые добавляют функциональность без изменения исходного кода библиотеки. Существуют плагины для:
Для подключения плагина достаточно импортировать его скрипт после основной библиотеки. Например, плагин для добавления иконки:
import ToastifyIcon from 'toastify-js-icon-plugin';
ToastifyIcon({
icon: 'success',
color: 'white'
});
После этого можно использовать новый параметр icon в
объекте настроек Toastify:
Toastify({
text: "Операция завершена",
icon: "success",
duration: 4000,
backgroundColor: "#2196F3"
}).showToast();
Для создания собственного расширения необходимо:
Toastify с
модифицированными параметрами.Пример расширения для автоматической смены цвета уведомления в зависимости от типа:
function customToast(options) {
switch(options.type) {
case 'success':
options.backgroundColor = '#4CAF50';
break;
case 'error':
options.backgroundColor = '#F44336';
break;
case 'warning':
options.backgroundColor = '#FF9800';
break;
default:
options.backgroundColor = '#2196F3';
}
Toastify(options).showToast();
}
customToast({
text: "Ошибка при сохранении",
type: "error",
duration: 5000
});
Для React и Vue разработаны адаптеры, которые позволяют использовать Toastify через компоненты:
// React пример
import Toastify from 'toastify-js';
import { useEffect } from 'react';
function Notify({ message }) {
useEffect(() => {
Toastify({ text: message, duration: 3000 }).showToast();
}, [message]);
return null;
}
Для Vue можно создать глобальный метод через
app.config.globalProperties:
app.config.globalProperties.$toast = (msg) => {
Toastify({ text: msg, duration: 3000 }).showToast();
};
className.node вместо text.Пример с HTML-контентом:
Toastify({
node: document.createElement('div'),
duration: 4000
}).showToast();
Создание кастомного узла позволяет добавлять кнопки, изображения и интерактивные элементы внутри уведомления.
Toastify позволяет создавать несколько уведомлений одновременно. Для управления стеком можно использовать массив объектов и отображать их с разными смещениями по вертикали:
const messages = ["Первое", "Второе", "Третье"];
messages.forEach((msg, i) => {
Toastify({
text: msg,
duration: 3000 + i * 1000,
gravity: "top",
position: "right",
offset: { y: i * 50 } // смещение по вертикали
}).showToast();
});
Такой подход позволяет создавать очевидный стек уведомлений, предотвращая наложение уведомлений друг на друга.
Расширения могут добавлять функциональность автоматического логирования уведомлений в консоль или сервер:
function logToast(options) {
console.log(`Toast: ${options.text}, type: ${options.type || 'info'}`);
Toastify(options).showToast();
}
logToast({ text: "Событие зарегистрировано", type: "success" });
Это полезно при разработке сложных приложений, где уведомления отражают состояние бизнес-логики и требуют отслеживания.