Для начала работы с библиотекой Toastify необходимо подключить её к проекту. Библиотека распространяется через CDN и npm.
Через 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>
Через npm:
npm install toastify-js
import Toastify from 'toastify-js';
import "toastify-js/src/toastify.css";
После подключения можно создавать уведомления методом
Toastify({...}).showToast();.
Для настройки уведомлений используются следующие ключевые параметры:
"top"
или "bottom"."left", "center", "right".true/false).Пример базового уведомления:
Toastify({
text: "Успешная операция",
duration: 5000,
gravity: "top",
position: "right",
backgroundColor: "#4CAF50",
close: true
}).showToast();
Для сбора метрик работы уведомлений необходимо использовать обратные вызовы и дополнительные события. Toastify предоставляет следующие возможности:
Параметр onClick позволяет зарегистрировать действие
пользователя:
Toastify({
text: "Нажми меня",
onClick: function() {
console.log("Уведомление кликнуто");
sendMetrics("click");
}
}).showToast();
В функцию sendMetrics можно передавать идентификаторы
уведомлений, время появления и другие данные.
Использование close: true автоматически создаёт кнопку
закрытия. Для сбора метрик важно логировать как закрытия
пользователем, так и автоматические
исчезновения:
function showToastWithMetrics(id) {
Toastify({
text: "Сообщение с метриками",
duration: 4000,
close: true,
onClick: function() {
sendMetrics({id, event: "click"});
},
callback: function() {
sendMetrics({id, event: "dismiss"});
}
}).showToast();
}
Важно: параметр
callbackвызывается после завершения анимации закрытия уведомления.
Для оценки вовлечённости полезно фиксировать длительность видимости уведомления:
const startTime = Date.now();
Toastify({
text: "Измеряем время видимости",
duration: 5000,
callback: function() {
const endTime = Date.now();
sendMetrics({event: "display_duration", duration: endTime - startTime});
}
}).showToast();
Для комплексного анализа рекомендуется использовать уникальные идентификаторы и категории уведомлений:
const toastData = {
id: "user_signup_01",
type: "success"
};
Toastify({
text: "Регистрация завершена",
duration: 3000,
onClick: () => sendMetrics({ ...toastData, event: "click" }),
callback: () => sendMetrics({ ...toastData, event: "dismiss" })
}).showToast();
Такой подход упрощает построение отчетов по типам уведомлений и действиям пользователей.
Метрики можно отправлять в любую аналитическую платформу: Google Analytics, Яндекс.Метрику, собственный сервер. Пример отправки на сервер через fetch:
function sendMetrics(data) {
fetch("/api/metrics", {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify(data)
});
}
Сбор данных включает:
event – тип события (click,
dismiss, display_duration)toastId – уникальный идентификатор уведомленияtimestamp – время событияduration – продолжительность отображенияДля расширенного анализа удобно создавать обёртки над Toastify, которые автоматически добавляют метрики:
function trackedToast(options) {
const id = options.id || `toast_${Date.now()}`;
const startTime = Date.now();
Toastify({
...options,
onClick: () => {
if (options.onClick) options.onClick();
sendMetrics({id, event: "click", timestamp: Date.now()});
},
callback: () => {
if (options.callback) options.callback();
sendMetrics({
id,
event: "dismiss",
duration: Date.now() - startTime,
timestamp: Date.now()
});
}
}).showToast();
}
Использование такой обёртки позволяет консистентно собирать метрики для всех уведомлений без дублирования кода и обеспечивает единый формат данных для аналитики.
Для анализа эффективности уведомлений полезно разделять их по визуальному оформлению:
backgroundColor) для разных категорий
(success, error, warning)gravity и position) для выявления
наиболее кликабельных зонduration) для проверки оптимального
времени отображенияСобранные данные позволяют строить корреляцию между дизайном уведомлений и действиями пользователей, что критично для улучшения пользовательского опыта.
Хотите, я могу дополнительно подготовить подробную схему архитектуры сбора метрик с Toastify в реальном проекте, включая серверные и клиентские компоненты? Это покажет, как данные проходят полный путь от уведомления до аналитики.