React/JSX动态组件名称

我正在尝试根据组件的类型动态渲染组件

例如:

var type=“Example”;
var ComponentName=类型+“组件”;
返回<组件名称/>;
//退货<示例组件/>而不是<示例组件/>

我尝试了这里提出的解决方案React/JSX动态组件名称

这在编译时给了我一个错误(使用browserify进行gulp)。在我使用数组语法的地方,它需要XML

我可以通过为每个组件创建一个方法来解决这个问题:

newExampleComponent(){
返回<示例组件/>;
}
新成员(类型){
返回此[“新”+类型+“组件”]();
}

但这意味着我创建的每个组件都有一个新方法。对于这个问题,必须有一个更优雅的解决方案

我很乐意接受建议

<MyComponent/&gt编译为React.createElement(MyComponent,{}),它需要字符串(HTML标记)或函数(ReactClass)作为第一个参数

您可以将组件类存储在一个名称以大写字母开头的变量中。请参阅HTML标记与React组件

var MyComponent=Components[type+“Component”];
返回<MyComponent/>;

编译成

var MyComponent=Components[type+“Component”];
返回React.createElement(MyComponent,{});

发表评论