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

如何在MD Toast中添加MUI图标且不报错、与文本对齐?

在MD Toast(react-toastify)中使用MUI自定义图标的解决方案

问题原因

你遇到的“无法读取未定义的属性”错误,核心原因是react-toastify新版本的icon属性要求传入返回React元素的函数,而非直接传入JSX元素。直接传递<InfoOutlinedIcon />会导致内部逻辑调用时读取未定义的属性,触发报错。

解决方案1:调整icon属性为函数形式

将icon的值改为返回MUI图标的函数,即可正常渲染图标:

import InfoOutlinedIcon from "@mui/icons-material/InfoOutlined";
import { toast } from 'react-toastify';

toast("Information Toast", {
  icon: () => <InfoOutlinedIcon />, // 用函数包裹图标元素
  autoClose: false,
});

解决方案2:自定义Toast组件(彻底解决对齐问题)

如果需要精准控制图标与长文本的对齐效果,完全自定义Toast内容是最优方案:

import InfoOutlinedIcon from "@mui/icons-material/InfoOutlined";
import { toast } from 'react-toastify';

// 自定义Toast组件,自由控制布局与样式
const CustomInfoToast = ({ closeToast }) => (
  <div style={{ 
    display: 'flex', 
    alignItems: 'center', 
    gap: '12px', 
    padding: '12px 16px' 
  }}>
    <InfoOutlinedIcon color="info" fontSize="small" />
    <div style={{ flex: 1 }}>
      Information Toast(此处可放置任意长度文本,图标会始终与文本垂直居中对齐)
    </div>
    <button 
      onClick={closeToast} 
      style={{ 
        background: 'none', 
        border: 'none', 
        cursor: 'pointer',
        fontSize: '18px'
      }}
    >
      ×
    </button>
  </div>
);

// 调用自定义Toast
toast(<CustomInfoToast />);

额外必要检查

确保项目中已正确引入并渲染ToastContainer组件,否则Toast无法显示:

import { ToastContainer } from 'react-toastify';
import 'react-toastify/dist/ReactToastify.css'; // 必须引入样式文件

function App() {
  return (
    <div className="App">
      {/* 你的其他应用内容 */}
      <ToastContainer />
    </div>
  );
}

export default App;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 05:01:35