2017-05-19 58 views
1

我在這裏使用了光滑的React Navigation並在nested navigation recipe之後,但我不知道如何將'this'傳遞給我的導航。對不起,我的無知。React Native:將道具傳遞給嵌套導航

這裏是我的總體結構輪廓:

class MyApp extends Component { 
    render() { 
    return (
     <StackNavigation 
     screenProps={this.state} 
     /> 
    ) 
    } 
} 

const MainScreenNavigator = TabNavigator(
    { 
    Awesome: { screen: Awesome } // How do I pass this.state? 
    } 
) 

const routesConfig = { 
    Home: { screen: MainScreenNavigator }, 
    Profile: { screen: Profile } 
} 

const StackNavigation = StackNavigator(routesConfig, {initialRouteName: 'Home'}) 

那麼,如何通過this.state我MainScreenNavigator?

回答

1

不確定您是否可以按原樣傳遞狀態。然而,你通過了PARAMS可以通過下一屏幕如下訪問..你可以試試這個

this.props.navigation.state.params.<<property passes>> 
4

this,你可以在StackNavigatorConfig通過一個額外的選項給StackNavigator。事情是這樣的:

const StackNavigation = StackNavigator(routesConfig, StackNavigatorConfig)

...其中StackNavigatorConfig是一個對象,如:

{ initialRouteName: 'Home', initialRouteParams: {...this.state} }

,這是要通過你的所有狀態到的初始路線您的導航器。

對於任何其他途徑你可以這樣做:

this.props.navigation.navigate('SomeScreen', {<the-greatest-object-for-pass-down>})

這是要去通的,最大的對象換傳遞下來SomeScreen

最後,您可以使用this.props.navigation.params訪問(最初和任何其他屏幕)的參數。

+0

我想我的觀點是'const StackNavigation'是在App組件外聲明的,所以它沒有'this'的上下文,並且這個'不可用 – AlxVallejo

+0

你是對的,我直到現在才意識到。但是......你想做什麼?爲什麼'screenProps'不能解決你的問題? –

+0

因此,這*起作用*爲初始渲染,但我注意到如果這些道具被修改(例如通過修改根組件的狀態),子畫面不會重新渲染。無論如何強迫導航員更新道具? –

相關問題