2017-01-17 38 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);