如何通过从路径读取 SVG 文件来注册自定义图标?
How to register custom icons by reading a SVG file from path?
我正在构建一个使用 @fluentui/react (version 8.34.7)
的应用程序,我正在使用 create-react-app
。
我想做的一件事是注册 SVG 格式的自定义图标。按照示例 here
,我想出了以下代码:
registerIcons({
icons: {
'hamburger-icon': (
<svg viewBox="0 0 16 16" role="presentation" focusable="false" aria-hidden="true">
<g>
<path d="M1 4.5v-1h14v1zm0 4v-1h14v1zm0 4v-1h14v1z"></path>
</g>
</svg>
)
}
});
这完全没问题。我可以在我的代码中引用 hamburger-icon
并显示图标。
但是,上面代码的问题是我必须在我的代码中包含 svg 文件内容。我想做的是读取 SVG 文件内容,然后在 registerIcons
方法中使用它。我不确定我该怎么做。
如果我这样做:
import Hamburger from 'assets/images/hamburger.svg';
我得到一个URL。
如果我这样做:
import {ReactComponent as HamburgerIcon} from 'assets/images/hamburger.svg';
我得到一个 React 组件,而 registerIcon
方法需要一个 React 元素。
是否可以简单地指定 SVG 文件的文件路径并从中注册图标?
好吧,这太简单了!我所要做的就是:
import {ReactComponent as HamburgerIcon} from 'assets/images/hamburger.svg';
registerIcons({
icons: {
'hamburger-icon': React.createElement(HamburgerIcon)
}
});
一切正常。
我正在构建一个使用 @fluentui/react (version 8.34.7)
的应用程序,我正在使用 create-react-app
。
我想做的一件事是注册 SVG 格式的自定义图标。按照示例 here
,我想出了以下代码:
registerIcons({
icons: {
'hamburger-icon': (
<svg viewBox="0 0 16 16" role="presentation" focusable="false" aria-hidden="true">
<g>
<path d="M1 4.5v-1h14v1zm0 4v-1h14v1zm0 4v-1h14v1z"></path>
</g>
</svg>
)
}
});
这完全没问题。我可以在我的代码中引用 hamburger-icon
并显示图标。
但是,上面代码的问题是我必须在我的代码中包含 svg 文件内容。我想做的是读取 SVG 文件内容,然后在 registerIcons
方法中使用它。我不确定我该怎么做。
如果我这样做:
import Hamburger from 'assets/images/hamburger.svg';
我得到一个URL。
如果我这样做:
import {ReactComponent as HamburgerIcon} from 'assets/images/hamburger.svg';
我得到一个 React 组件,而 registerIcon
方法需要一个 React 元素。
是否可以简单地指定 SVG 文件的文件路径并从中注册图标?
好吧,这太简单了!我所要做的就是:
import {ReactComponent as HamburgerIcon} from 'assets/images/hamburger.svg';
registerIcons({
icons: {
'hamburger-icon': React.createElement(HamburgerIcon)
}
});
一切正常。