我有一个反应应用程序,我想在运行时选择组件类型。我正在使用ES6和JSX。在运行时选择反应组件的类型在JSX中
这里是我的代码:
import Canvas from '../components/Canvas'
import CanvasTextbox from '../components/CanvasTextbox';
....
export default class CenterPane extends React.Component {
...
render() {
const canvasKids = [];
//for (var i = 0; i < 1; i++) {
// canvasKids.push(<CanvasTextbox key={i} id={'CanvasTextbox1'} />);
//};
for (var i = 0; i < 1; i++) {
let kid = this.state.kids[i];
let CanvasComp = kid.type; // evaluates to 'CanvasTextbox '
canvasKids.push(<CanvasComp key={i} id={kid.id} />);
console.log(canvasKids)
};
return (
<div>
Canvas:
<Canvas
name="myCanvas"
addChild={this.onAddChild.bind(this)}
>
{canvasKids}
</Canvas>
</div>
);
}
}
当我指的是组件的名称,(如在评论for
环路),它的工作原理。但是,如果我尝试使用变量名称,则不会。
我试着将名称分配给一个大写的变量,如docs的指导,但仍然没有。
我的画布组件确实有孩子,但它不是一个反应成分,如在此反应devtools screengrab:
组件不是在画布上绘制的。
请帮忙。谢谢
您,先生,是救生员。奇迹般有效。万分感谢。 – Snowman