我正在导入所有SVG'图标'通过index.jsx,如下一行:
index.jsx:
export about from './about.svg';
这里是导入: Button.jsx
import React from 'react';
import './MenuIcon.scss';
import * as IconID from './icons';
const Button = (props) => {
return (
<div className="menu-icon" >
<div className={'menu-icon__icon-wrapper'}>
<IconID.about /> // This works great
<IconID['about'] /> // This does not work
</div>
</div>
);
};
export default Button;
现在获取一个特定的Svg,例如我只是在返回方法中调用,一切正常。
现在我想加载不同的SVG,如:
const svgName = 'back';
return (<IconId['back'] />);
我怎样才能做到这一点?
答案 0 :(得分:4)
使用React.createElement
语法来动态定义元素而不是JSX,因为它只适用于编译时标识符。
React.createElement(IconId.back, {...props}, [...children])
答案 1 :(得分:2)
您可以在此处使用上下文
const importAll = (r) => {
return r.keys().map(r);
};
const allData = importAll(
require.context("./icons", false, /\.svg$/)
)