You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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>

额外检查项

  1. 确认ConfirmationDialog组件在SnackbarProvider包裹范围内(你的代码已满足此条件)
  2. 若在Dialog关闭时触发通知,确保状态更新逻辑正确(比如同步调用showAlert和setIsAddDialogOpen(false)是可行的)

内容的提问来源于stack exchange,提问作者ganesh kaspate

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 01:57:45