JavaScript: события CustomEvent и метод dispatchEvent
2 года назад·1 мин. на чтение
В этой статье рассмотрим как создавать события Event и CustomEvent и отправлять их при помощи метода dispatchEvent(). Также рассмотрим сценарии использования кастомных событий в проектах.
События играют важную роль в web приложениях. С их помощью различные компоненты могут общаться друг с другом. Также они необходимы при реализации микрофронтенд архитектуры.
Конструктор
Создать событие с помощью конструктора
Конструктор
При помощи
Как создать кастомное событие?
Есть несколько способов создать кастомное событие:- при помощи конструктора
Event
, - при помощи конструктора
CustomEvent
(предпочтительно)
CustomEvent
.
Конструктор Event
Создать событие с помощью конструктора Event
можно следующим образом:
Имена событий не чувствительны к регистру (const event = new Event('ADD_NOTIFICATION');
ADD_NOTIFICATION
, add_notification
будут восприниматься как одно и то же событие).
Конструктор CustomEvent
При помощи CustomEvent
можно передавать дополнительные данные. Для этого нужно добавить их в поле detail
.
const event = new CustomEvent('ADD_NOTIFICATION', { detail: { type: 'message', payload: 'Привет' } });
Отправка событий
Событие создано, теперь нужно его отправить. Для отправки используется методdispatchEvent()
. Он принимает параметр event
.
Также в приложении есть код, который прослушивает это событие.// event - объект, созданный выше window.dispatchEvent(event);
const handleAddNotification = (event) => { // ... } window.addEventListener('ADD_NOTIFICATION', handleAddNotification);
Где можно использовать кастомные события
Микрофронтенд приложения. В отличие от монолита, микрофронтенд архитектура предполагает наличие несколько изолированных частей приложения, которые используются вместе. Эти части могут быть написаны на разных фреймворках. Для того, чтобы эти части могли обмениваться между собой данными нужен слой для общения.CustomEvent
- это нативное решение, не зависящее от фреймворка, отлично подходит для этих целей.10 трендов веб-разработки в 2023 году
2 года назад·10 мин. на чтение