@elcrm/event
v0.0.2
Published
Лёгкая шина событий для elCRM: Emitter (pub/sub + React-хук) и Listener (регистрация колбэка по имени).
Maintainers
Readme
@elcrm/event
Лёгкая шина событий для elCRM: Emitter (pub/sub + React-хук) и Listener (один колбэк по имени).
Установка
npm install @elcrm/event
# или
bun add @elcrm/eventТребования: Node.js ≥ 18. Peer-зависимости: react ≥ 18 (для useEmitter).
Emitter — pub/sub
Несколько подписчиков на одно имя события. Подходит для уведомлений между модулями и для React-состояния.
import { setEmitter, useEmitter, subEmitter } from "@elcrm/event";
// React: подписка на событие (начальное значение — второй аргумент)
function UserBadge() {
const [user] = useEmitter("user-data", { name: "", email: "" });
return <span>{user.name}</span>;
}
// Вне React: колбэк
subEmitter("user-data", (payload) => {
console.log("user-data:", payload);
});
// Эмит — все подписчики получают значение
setEmitter("user-data", { name: "Иван", email: "[email protected]" });| API | Назначение |
| -------------------------- | ----------------------------------------------- |
| useEmitter(name, value) | React-хук: [data] с обновлением при эмите |
| subEmitter(name, cb) | Подписка колбэка (можно несколько на одно имя) |
| setEmitter(name, value) | Вызов всех подписчиков с value |
Listener — один колбэк
Один обработчик на имя (повторный useListener перезаписывает предыдущий).
import { useListener, setListener } from "@elcrm/event";
useListener("dataUpdate", (data) => {
console.log("Данные обновлены:", data);
});
setListener("dataUpdate", { id: 1, name: "Новые данные" });| API | Назначение |
| ------------------------- | ----------------------------------------------- |
| useListener(name, fn) | Зарегистрировать (или заменить) слушатель |
| setListener(name, data) | Вызвать слушатель; нет регистрации — no-op |
Имя
useListenerисторическое: это не React-хук, а регистрация колбэка.
Когда что использовать
- Emitter — несколько слушателей, React UI, «широковещательные» события.
- Listener — простой канал «один обработчик» (например, глобальный action извне React).
Лицензия
MIT © MaSkal
