Luc*_*ous 4 javascript notifications reactjs snackbar material-ui
我正在使用 material-ui Snackbar创建我的 react 应用程序。在我的项目中,我有很多组件,不想在每个组件中插入 <Snackbar/>。有没有办法创建显示小吃店的功能,然后只需在每个组件中导入并使用此功能?
就像是:
从 'SnackbarUtils' 导入 showSnackbar;
showSnackbar('成功消息');
小智 14
将其扩展为 Hook,然后您可以调用它一次并使用带有效果的状态来显示:
import { useSnackbar } from 'notistack';
import IconButton from "@mui/material/IconButton";
import CloseIcon from "@mui/material/SvgIcon/SvgIcon";
import React, {Fragment, useEffect, useState} from "react";
const useNotification = () => {
const [conf, setConf] = useState({});
const { enqueueSnackbar, closeSnackbar } = useSnackbar();
const action = key => (
<Fragment>
<IconButton onClick={() => { closeSnackbar(key) }}>
<CloseIcon />
</IconButton>
</Fragment>
);
useEffect(()=>{
if(conf?.msg){
let variant = 'info';
if(conf.variant){
variant = conf.variant;
}
enqueueSnackbar(conf.msg, {
variant: variant,
autoHideDuration: 5000,
action
});
}
},[conf]);
return [conf, setConf];
};
export default useNotification;
Run Code Online (Sandbox Code Playgroud)
然后你就可以使用它:
const [msg, sendNotification] = useNotification();
sendNotification({msg: 'yourmessage', variant: 'error/info.....'})
Run Code Online (Sandbox Code Playgroud)
你必须以反应的方式来做。您可以通过创建高阶组件来实现这一点。
看一下这个。 https://stackblitz.com/edit/snackbar-hoc?file=src/SnackbarHOC.js
| 归档时间: |
|
| 查看次数: |
2408 次 |
| 最近记录: |