【发布时间】:2016-02-25 11:19:12
【问题描述】:
我正在做一个 Meteor + React 项目。请原谅我在这里听起来有点菜鸟,但我需要一些帮助来动态调用 React 组件。例如,我有三个组件<ComponentA />、<ComponentB /> 和<ComponentC />。但是,我想动态渲染它们;
var comp = /*some function that brings a string here*/; // this variable 'comp' could
//be either of the ComponentA, ComponentB and ComponentC.
将此 comp 变量呈现为反应组件的最佳方法是什么?
以下是系统应该如何工作:
if (Meteor.isClient) {
WelcomeComponent = React.createClass({
render() {
return <div><h1>Hello, {this.props.name}</h1></div>
}
});
GoodbyeComponent = React.createClass({
render() {
return <div><h1>Bye Bye, {this.props.name}</h1></div>
}
});
MainLayout = React.createClass({
render() {
return <div>
<header>
This is our header
</header>
<main>
{this.props.content}
</main>
<footer>
This is our footer
</footer>
</div>
}
});
if (login){
var comp = 'WelcomeComponent';
}else{
var comp = 'GoodbyeComponent';
}
// I want above 'comp' variable to be used for rendering/loading/producing respective component
ReactLayout.render(MainLayout, {content:<WelcomeComponent name="Kavish"/>})
// ReactLayout.render(MainLayout, {content:<GoodbyeComponent name="Kavish"/>})
}
comp 变量可以是字符串格式的组件名称。请告知如何使用变量 comp 调用函数来加载所需的组件。
【问题讨论】: