React中使用Notistack在MUI模态框内显示通知的问题
解决Notistack通知在MUI ConfirmationDialog内不显示的问题
问题核心是层级覆盖:MUI Dialog默认z-index为1300,Notistack Snackbar默认z-index为1400,但项目自定义主题或层级冲突会导致通知被Dialog遮挡。以下是两种可行修改方案:
方案一:在自定义钩子中单独设置通知层级
修改useCustomSnackbar钩子,给通知添加更高的z-index样式,确保能覆盖Dialog:
import { useSnackbar } from "notistack"; import { autoHideDuration } from "configuration"; export function useCustomSnackbar() { const { enqueueSnackbar, closeSnackbar } = useSnackbar(); const showAlert = ({ variant, message }) => { enqueueSnackbar(message, { variant, anchorOrigin: { vertical: "top", horizontal: "center", }, autoHideDuration: autoHideDuration, // 设置更高层级,确保覆盖Dialog style: { zIndex: 1500 } }); }; return showAlert; }
方案二:全局配置SnackbarProvider层级
若希望所有通知统一生效,可直接在全局SnackbarProvider中设置默认props:
// index.jsx <React.StrictMode> <SnackbarProvider snackbarProps={{ style: { zIndex: 1500 } }} > <App /> </SnackbarProvider> </React.StrictMode>
额外检查项
- 确认
ConfirmationDialog组件在SnackbarProvider包裹范围内(你的代码已满足此条件) - 若在Dialog关闭时触发通知,确保状态更新逻辑正确(比如同步调用
showAlert和setIsAddDialogOpen(false)是可行的)
内容的提问来源于stack exchange,提问作者ganesh kaspate
相关产品推荐
相关产品推荐

