2016-02-19 89 views
2

我有簡單的導航傳遞動態道具陣營本地

if (routeId === 'Page1') { 
    return (
    <Page1 
     navigator={navigator} /> 
); 
} 
if (routeId === 'Page2') { 
    return (
    <Page2 
     navigator={navigator} /> 

); 
} 

然後在一個頁面上就行了我的功能結合到每一行,對象通過。 (c)

render(){ 
    this.state.listData.map((c, i) => { 
     return <TouchableOpacity onPress={this.visitPage.bind(this, c)} key={ i } style={ styles.cContainer }> 
     <Image source={{uri:c.avatar}} style={ styles.circular }> 
     </Image> 
     <Text style={styles.text}>{c.name}</Text> 
     </TouchableOpacity> 
    } 
    } 

現在我怎麼能得到這個對象去第2頁? 在visitPage我有...

visitPage(){ 
    this.props.navigator.push({ 
    id:'Page2', 
    name:'Page2', 
    passProps:{data:this} //iOS only uses passProps?? 
    }); 
} 

香港專業教育學院還試圖

visitPage(){ 
    this.props.navigator.push({ 
    id:'Page2', 
    name:'Page2', 
    data:this 
    }); 
} 

然後在第2頁在構造函數中,我的數據設置爲空,頁面上安裝,讀取性能。

constructor(props, context) { 
    super(props, context); 
    console.log(this.props);// Returns my navigator object, but no properties along with it. 
    this.state = { 
     page2Data: this.props.data, 
    }; 
    } 

    onComponentWillMount(){ 
    console.log(this.props.data); // Returns undefined 
    this.setState({page2Data: this.props.data}); 
    } 

回答

0

如果你想使用passProps,你需要的屬性附加到您的組件是這樣的:

if (routeId === 'Page1') { 
    return (
    <Page1 {...route.passProps} navigator={navigator} /> 
); 
} 
if (routeId === 'Page2') { 
    return (
    <Page2 {...route.passProps} navigator={navigator} /> 

); 
} 

然後,你可以這樣做:

this.props.navigator.push({ 
    id: 1, 
    passProps: { 
     name: 'Chris', 
     location: 'some location' 
    } 
}) 
+1

謝謝!很簡單。我發現文檔缺乏與反原生相當困難。也許我只是吮吸閱讀它..大聲笑 – KyleK

+0

不,這需要被添加到文檔肯定! –

+0

請提交PR到文檔以幫助那些關注 –