reactjs - 我正在尝试使用 React.createElement 动态创建 Mui 图标。但是,React 会将该元素小写。有办法保留案例吗?

标签 reactjs dom dynamic material-ui element

我从 JSON 获取 service.icon,所以它看起来像这样

[
  {
    "icon": "AdminPanelSettingsIcon",
  }
]

我像这样使用 React.createElement() ,

data.map((service) => {
  let icon = React.createElement(
    service.icon, 
    { key: service.icon }, 
    null);
});

我的输出是<adminpanelsettingsicon></adminpanelsettingsicon>

是否有办法保留大小写,或转换为 PascalCase,以便它呈现如下 <AdminPanelSettingsIcon></AdminPanelSettingsIcon>

注意:是否有基于指定 JSON 又名 api 调用动态显示 mui 图标的方法。

最佳答案

docs指定:

React.createElement(
  type,
  [props],
  [...children]
)

The type argument can be either a tag name string (such as 'div' or 'span'), a React component type (a class or a function), or a React fragment type.

您正在尝试使用字符串“AdminPanelSettingsIcon”创建一个元素。相反,您应该通过传入类来尝试此操作:

React.createElement(AdminPanelSettingsIcon)

您可以通过将列表转换为使用类作为值来完成此操作:

[
  {
    // The value is a class now, not a string
    "icon": AdminPanelSettingsIcon,
  }
]

关于reactjs - 我正在尝试使用 React.createElement 动态创建 Mui 图标。但是,React 会将该元素小写。有办法保留案例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72194742/

相关文章:

asp.net - DELETE 语句与 ASP.NET 动态数据中的 REFERENCE 约束冲突

javascript - 将EventListener 添加到innerHTML

javascript - 使用 javascript 使输入类型=文本禁用或只读

c# - 是否有与 Ruby 的 `respond_to?` 等效的 C#?

ios - 如何在具有授权证书的 React Native Webview 上加载网站

javascript - 获取可编辑div中选中元素的id

javascript - onchange 函数动态更新的问题

javascript - 如果使用多个导入而不是一个命名导入,是否会有性能成本

reactjs - React-redux 获取站点基本 URL/window.location

javascript - react 谷歌地图 : Marker resizes after zooming