如何在 ANTD 设计菜单中添加自定义 image/icon?

How to add a custom image/icon in ANTD Design menu?

使用这个例子:https://ant.design/components/layout/#components-layout-demo-side

如何添加自定义图像或图标而不是默认图标。

我试过了:

<Menu.Item to="/" key="2">
  <img className="ant-menu-item" src={require('image.png')} />
  <span>Shopify</span>
  <Link to="/shopify">Home</Link>
</Menu.Item>

但这看起来不太好或不尊重折叠的行为

我希望这可能有用。 您需要处理单独的 css 文件并将其放入此代码

.ant-menu-item{background-image: url("theme5.jpg");}
<Menu.Item to="/" key="2">
    <img className="ant-menu-item" src=="{{ "image.png" | asset_url }}"/>
    <span>Shopify</span>
    <Link to="/shopify">Home</Link>
</Menu.Item>

我尝试了几种不同的方法来创建自定义图标,最简单且效果最好的一种是使用 antd Icon 组件的 component 属性。只需给它一个功能组件,returns 无论你想使用什么图像:

<Icon component={() => (<img src="/image.svg" />)} />

这似乎在菜单项和子菜单中运行良好,只是图标不像内置图标那样与菜单文本完美对齐。我最终将 transform: translateY(-3px) 添加到 CSS 以对此进行补偿(可能取决于您使用的图像)。

另一方面,official solution (for SVG images only) is to use the @svgr/webpack plugin将SVG文件变成组件。就布局和着色而言,这可能有一些优势(antd 图标似乎更喜欢实际的 <svg> 元素,而不是带有 SVG 图像文件的 <img> 元素)。但我不确定,因为我没有费心去设置它。

icon:<img src="/static/icons/BH_tainan.svg"  height={20} style={{margin:"0 12px 0 0" ,paddingTop:10 ,float:"left"}}/>,

需要 float:"left" 在你的风格中