2017-09-04 5 views
0

同じ画面に移動しますが、異なるパラメータで移動します。 そうMyRouteNameに私をナビゲートするが、異なるのparamsを持つ必要があるボタンをクリックし、この画面にMyRouteName react-navigation:同じRouteNameに移動しますが、異なるパラメータで移動します。

    1. ナビゲートを想像してみてください。

    現在、私は
    this.props.navigation.navigate('MyRouteName', {param1: 'new val'})

    const setParamsAction = NavigationActions.setParams({ 
         params: { param1: 'new val'}, 
         key: 'mrn-new_val', 
        }) 
    this.props.navigation.dispatch(setParamsAction) 
    

    にどちらの仕事をしようとしました。私が見つけたドキュメントやgithubの問題は、これに関する明確なガイダンスを提供していません。

    これはどのように達成できますか?


    更新

    以下のコメントに反応して、私は私の最終的な実装に基づくDrawerNavigator

    // MyDrawer.js 
    // ... 
    const MyDrawer = DrawerNavigator(
        { 
        MyRouteName: { 
         screen: MyScreen,  
        },  
        }, 
        { 
        initialRouteName: 'MyRouteName',  
        contentOptions: { 
         activeTintColor: '#e91e63', 
        }, 
        contentComponent: props => <DrawerScreen {...props}/>, 
        } 
    ); 
    export default MyDrawer; 
    
    
    
    // MyScreen.js 
    class MyScreen extends React.Component{ 
        //.. 
        //.. stuff goes here 
        //.. 
        drillDown(newVal){  
         const setParamsAction = NavigationActions.setParams({ 
          params: { param1: newVal }, 
          key: 'ms-${newVal}', 
         }) 
         this.props.navigation.dispatch(setParamsAction) 
        } 
        //.. 
        //.. more stuff 
        //.. 
    } 
    

    につながる、私のルートとして積み重ねNavigatorを使用しています@ benneygenelさんの答えです。

    const MyDrawer = DrawerNavigator({ 
        MyRouteName: { 
         screen: StackNavigator({ 
         DrillDown:{ 
          screen: MyScreen, 
         }, 
         }, { 
         headerMode: 'none', 
         }), 
        }, 
    }); 
    

  • +0

    ナビゲータからスニペットを投稿できますか?スタックまたはタブナビゲータを使用していますか? – bennygenel

    +0

    @bennygenel上記のコードを更新しました。 –

    答えて

    1

    あなたが引き出し内部StackNavigatorを使用し、通常StackNavigatorようにナビゲートすることができる(マイスクリーンは、それ自身のヘッダを定義します)。

    const MyDrawer = DrawerNavigator({ 
        MyRouteName: { 
        screen: StackNavigator({ 
         DrillDown: { 
         screen: MyScreen 
         } 
        }),  
        }, 
    }); 
    export default MyDrawer; 
    
    関連する問題