2017-05-19 28 views
1

私は滑らかなリアクションナビゲーションを使用しており、nested navigation recipeに続いていますが、私はナビゲーションに「これ」を渡す方法がわかりません。私の無知のために申し訳ありません。ここで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'}) 

は、どのように私は私のMainScreenNavigatorにthis.stateを渡すのですか?

答えて

1

状態をそのまま渡すことができるかどうかはわかりません。次のようにしかし、あなたが渡されたのparamsは、次の画面でアクセスすることができます..あなたがthisによると、この

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

を試すことができ、あなたはStackNavigatorConfigにStackNavigatorに余分なオプションを渡すことができます。このような何か:つもり初期ルートのにすべてのあなたの状態を渡している

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

そしてそれ:StackNavigatorConfigは、オブジェクトのようなものです

const StackNavigation = StackNavigator(routesConfig, StackNavigatorConfig)

...あなたのナビゲータ。 については

他の経路を行うことができます

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

そして、それはにSomeScreenが-のためのバイパスダウン最大オブジェクトつもりパスです。

最後に、のパラメータには、(初期画面と他の画面)の両方にアクセスできます。this.props.navigation.paramsです。

+0

私の主張は、 'const StackNavigation'はAppコンポーネントの外で宣言されているので、' this'のコンテキストがなく、 'this'は利用できません。 – AlxVallejo

+0

Youre right、私は今まで実現しています。しかし...具体的に何をしたいですか?そしてなぜ 'screenProps'があなたの問題を解決しないのですか? –

+0

これは最初のレンダリングでは*動作しますが、(ルートコンポーネントの状態を変更するなどして)これらの小道具を変更した場合、子画面は再レンダリングされません。ナビゲーターがその小道具を更新するように強制する余地はありますか? –

関連する問題