需要一个全局的snackbar通知处理程序,可以从任何地方触发,而不仅仅是反应组件。
我的想法是制作一个监听CustomEvent并仅显示snackbar事件触发时间的组件。我制作了一个简单的事件调度程序类,可以在项目的每个部分中导入。它运作良好并且非常易于使用。
全局 React 组件的一部分
componentDidMount() {
document.addEventListener("onGobalMessage", this.onSnackMessage);
}
componentWillUnmount() {
document.removeEventListener("onGobalMessage", this.onSnackMessage);
}
onSnackMessage = evt => {
const { detail } = evt;
this.setState({ open: true, ...detail });
};
Run Code Online (Sandbox Code Playgroud)
调度程序对象
componentDidMount() {
document.addEventListener("onGobalMessage", this.onSnackMessage);
}
componentWillUnmount() {
document.removeEventListener("onGobalMessage", this.onSnackMessage);
}
onSnackMessage = evt => {
const { detail } = evt;
this.setState({ open: true, ...detail });
};
Run Code Online (Sandbox Code Playgroud)
我的问题是:在react项目中使用这种方式是邪恶的吗?:)