【问题标题】:how to render a component by string name如何通过字符串名称呈现组件
【发布时间】:2018-05-22 20:59:30
【问题描述】:

我似乎无法使用名称字符串呈现组件。我希望能够动态生成组件名称字符串,这些字符串具有可以呈现的现有相应组件。

array const 将通过 JSON 数据填充,这就是为什么我需要使用 string 值来识别组件。

这是我想要做的:

import Module1 from './module1';
import Module2 from './module2';
import Module3 from './module3';

const array = ['Module1', 'Module2', 'Module3'];

{array.map((Module, index) =>
 <Module />
)}

React 不是引用现有组件并渲染它,而是渲染一个全小写的自定义元素标签。

注意:这些组件 ['Module1', 'Module2', 'Module3'] 创建为 extends Component

【问题讨论】:

    标签: arrays string reactjs components react-fiber


    【解决方案1】:

    您可以将组件放在一个对象中,并使用字符串作为键来访问它们。

    import Module1 from './module1';
    import Module2 from './module2';
    import Module3 from './module3';
    
    const array = ['Module1', 'Module2', 'Module3'];
    
    const modules = {
      Module1,
      Module2,
      Module3,
    };
    
    {moduleOrderArr.map((key, index) => {
      const Module = modules[key];
      return <Module />;
    })}
    

    【讨论】:

    • 但是,我不知道组件名称。这部分const modules = { Module1, Module2, Module3, };怎么可能是动态的?
    • 您可以将您导入的每个组件放入对象中。您还可以将键设置为组件名称以外的其他内容。
    • 啊!好点子。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2013-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多