我正在尝试制作可动态导入请求的Material-UI图标的React组件, 页面加载时。我在这里提出的解决方案有效,但它发出警告 在编译时。此外,它会减慢项目的编译速度。
关于如何正确执行此操作的任何想法? https://github.com/jurepetrovic/ordermanager_demo
主要逻辑可在App.js的第5-10行中找到:
import React, { Component } from 'react';
import BarChartIcon from '@material-ui/icons/BarChart';
const MaterialIcon = ({ icon }) => {
console.log("icon: " + icon);
let resolved = require(`@material-ui/icons/${icon}`).default;
return React.createElement(resolved);
}
class App extends Component {
render() {
return (
<div>
<MaterialIcon icon={"PowerSettingsNew"} />
</div>
);
}
}
export default App;
它给出的警告是:
答案 0 :(得分:0)
我终于找到了解决这个问题的最简单方法:
import
包装中的所有材料图标:
import * as Icons from '@material-ui/icons'
我假设您从api中获取了图标名称,最后您有了类似的内容:
var iconNamesArray = ["FitnessCenter","LocalDrink","Straighten"]
最后按如下所示加载图标:
<div className="my-icons-wrapper-css">
{
iconNamesArray.map((el,ind)=>{
let DynamicIcon = Icons[el]
return(
<DynamicIcon className="my-icon-css"/>
);
})
}
</div>
您的图标将出现在屏幕上。