在运行时反应本机动态注入组件

时间:2016-06-08 19:45:12

标签: javascript reactjs react-native

我需要在运行时使用react native动态注入组件。我从API端点接收数据,然后我将其设置为状态。目前有三种可能性 - > EventModal,ArticleModal,NewsModal。我导入了所有三个。我正在尝试做的一个简化示例如下......

render() {
    let Page = { component: this.state.currentModal + "Modal" };
    return (
        <Page.component />
    );
}

这类似于How to Host and Run a Basic Windows Communication Foundation Service

但遗憾的是,由于我收到错误“预期组件类,得到EventModal”,因此似乎没有工作(括号内和括号内的示例)。同样,我尝试使用对象语法

 render() {
    let Page = this.state.currentModal + "Modal";
    return (
        <Page />
    );
}

然而同样的结果。有什么建议吗?

2 个答案:

答案 0 :(得分:2)

这是因为您要添加&#39;模态&#39;它将变量转换为字符串,因此不是组件。此外,React Native不会将任何变量视为Component,除非它在开头有一个大写。

所以尝试这样的事情(你也必须添加其他的):

    import EventModal = require('./EventModal');

render(){
    let Component = null;

    switch(this.state.currentModal){

       case: 'EventModal':
       Component = EventModal;
    break;

    }

    return <Component/>;

答案 1 :(得分:0)

您需要导入/需要EventModal。所以在这种情况下最好不要使用字符串并使用引用

var EventModal = require('../components/EventModal');
render() {
   let Page = EventModal;
   return (
    <Page />
   );
 }