reactjs - 在 React 中动态加载 Material-UI 图标

标签 reactjs webpack material-ui

我正在尝试制作动态导入请求的 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;

它给出的警告是这样的:

Compile warning

最佳答案

我终于找到了解决这个问题的最简单的方法:

  • import包中的所有 Material 图标:
    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>
    

  • 您的图标将出现在屏幕上。

    关于reactjs - 在 React 中动态加载 Material-UI 图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57981442/

    相关文章:

    reactjs - 尽管调用了函数,<ErrorMessage/> 仍不起作用

    webpack 用 index.htm 中的 bundle hash 替换占位符

    material-ui - Material UI RTL

    javascript - ReactJS:使用自己的 CSS 创建独立组件

    reactjs - 在 Material-ui 包装组件中定位和设置特定子元素样式的正确方法?

    javascript - 错误 : Couldn't find preset "es2015" relative to directory

    node.js - 如何构建一个使用 React 构建的独立桌面应用程序,使用 Node 后端,并将前端和后端都 package 在 Electron 中作为桌面应用程序?

    javascript - 更新数组上的状态,除了该数组中的一个对象之外 ReactJS

    sqlite - 将 npm 模块与 Electron 和 webpack 一起使用?

    reactjs - 常量导出不适用于 react 应用程序