Требуется глобальный snackbar
подобный обработчик уведомлений, который может запускаться из любого места, а не только из реагирующего компонента.
Моя идея состояла в том, чтобы создать компонент, который прослушивает CustomEvent
и просто показываетsnackbar
когда событие запущено. Я создал простой класс диспетчера событий, который можно импортировать в любую часть проекта. Он работает хорошо и очень прост в использовании.
Часть глобального компонента реакции
componentDidMount() {
document.addEventListener("onGobalMessage", this.onSnackMessage);
}
componentWillUnmount() {
document.removeEventListener("onGobalMessage", this.onSnackMessage);
}
onSnackMessage = evt => {
const { detail } = evt;
this.setState({ open: true, ...detail });
};
Объект диспетчера
export const globalMessage = {
success: message => {
let event = new CustomEvent("onGobalMessage", {
detail: {
message,
variant: "success"
}
});
document.dispatchEvent(event);
},
error: message => {
let event = new CustomEvent("onGobalMessage", {
detail: {
message,
variant: "error"
}
});
document.dispatchEvent(event);
}
};
Мой вопрос: разве от зла использовать этот способ в проекте реагирования? :)