Является ли плохой идеей использовать CustomEvent в реагирующем глобальном компоненте, таком как закусочная в AppRoot? - PullRequest
1 голос
/ 11 октября 2019

Требуется глобальный 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);
  }
};

Мой вопрос: разве от зла ​​использовать этот способ в проекте реагирования? :)

...