2017-01-17 37 views
1

如何在没有此开关的情况下调用组件? 喜欢的东西:如何通过参数调用组件?

<(route.id) navigator={navigator} /> 

    navigatorRenderScene(route, navigator) { 
    switch (route.id) { 
     case 'First': 
     return <First navigator={navigator} /> 
     case 'Second': 
     return <Second navigator={navigator} /> 
     case 'Third': 
     return <Third navigator={navigator} /> 
    } 
    } 
+0

您是否在寻找像'反应,router'? https://github.com/ReactTraining/react-router –

+0

我编辑了我的答案,你可以再次查看它。 – lustoykov

回答

1

这里的样品溶液

const FIELD_MAPPING = { 
    First, 
    Second, 
    Third, 
}; 


render() { 
    const ComponentField = FIELD_MAPPING[route.id] || DefaultComponentField; 

    return <ComponentField navigator={navigator} />; 
} 

注意:动态组件的名称,如

const MyComponent = 'First' 

return <MyComponent /> 

是不可能的,因为

return <MyComponent /> 

编译为

return React.createElement(MyComponent, options); 

大写类型指示JSX标记指代阵营组件。这些标记会被编译成指定变量的直接引用,所以如果使用JSX表达式,Foo必须处于作用域中。

否则,该类型是一个字符串或不是大写变量,并被解释为HTML标记。

React.createElement('div', options); 

相当于

const tag = 'div'; 
React.createElement(tag, options);