reactjs - 如何根据 prop 值加载 React 组件

标签 reactjs typescript fluentui-react

我正在将图标组件与“@ Fluentui/react-northstar”库一起使用,如下所示

import { QnaIcon } from '@fluentui/react-northstar'
const Example1 = () => (
  <>
    <QnaIcon size="large" />
  </>
) 

现在,当图标名称来自类似这样的 prop 时,我必须动态加载图标组件

import React from 'react'
import { Button, TeamCreateIcon   } from '@fluentui/react-northstar' 

const Example2 = ({iconName}) => {
 
const MyIcon = <iconName /> ; //here I need to convert string to component 

return (
  <div >
     <Button icon={<TeamCreateIcon />} title="Create" />
     // Here I need set it
     <Button icon={<MyIcon />} title="Create" />    
  </div>
)} 
<Example2 iconName='QnaIcon' />  

code https://codesandbox.io

最佳答案

我是巴西人,因此我会说葡萄牙语,但我会使用翻译器来帮助您。

您可以执行以下操作:

import React from 'react'
import { Button, TeamCreateIcon   } from '@fluentui/react-northstar' 

const Example2 = ({iconName}) => {

const ICONS = {
  iconLike: <YourLikeIcon/>,
  iconMenu: <YourMenuIcon/>,
}

return (
  <div >
     <Button icon={<TeamCreateIcon />} title="Create" />
     // Here I need set it
     <Button icon={ICONS[iconName]} title="Create" />    
  </div>
)} 

但是您必须小心使用iconName,因为如果它不正确,可能会出现错误。为了防止你可以提前做一些测试。

关于reactjs - 如何根据 prop 值加载 React 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66475725/

相关文章:

javascript - 如何在 react 中显示加载程序。使用钩子(Hook)

sharepoint-online - 在 SharePoint online 中使用 SPFx 实现 FluentUI 时出现问题

office-ui-fabric - 如何在 Fluentui(Office ui Fabric)中创建 "danger"按钮?

angular - 为什么 Angular 类型 "Routes"是可变的?

javascript - 如何在 C 编程中制作 typescript 模拟指针?

node.js - 防止在监视模式下运行时对某些文件夹进行更改后自动重新启动服务器

reactjs - 支持使用 React Hook 表单验证时更改另一个字段值的回调

javascript - 如何使用 setState 更新对象中的状态

javascript - 我说得对吗,从对象中销毁对象不会创建新对象

javascript - ReactJS:预期 onClick 监听器是一个函数,而不是类型字符串