2017-11-06 7 views
2

私は3つのタブを持つTabNavigatorを持っています。これらの3つのタブにはそれぞれ、StackNavigatorsがあります。タブが2回クリックされたときにStackNavigatorをナビゲートする方法は?

ユーザーが同じタブボタンを2回クリックすると、StackNavigatorを元に戻す方法はありますか?

enter image description here

私の現在のアプローチだけでやっている....何も..

tabBarComponent: ({jumpToIndex, ...props, navigation}) => (
    <TabBarBottom {...props} jumpToIndex={index => { 
     const { state } = navigation, 
      { routes } = state; 

     console.log(routes); 

     if (state.index === index) { 
     console.log(index); 

     const resetTabAction = NavigationActions.navigate({ 
      routeName: 'Dishes', 
      action: NavigationActions.reset({ 
      index: 0, 
      actions: [NavigationActions.navigate({ routeName: 'Dishes' })], 
      }) 
     }); 
     // props.navigation.dispatch(resetTabAction); 
     navigation.dispatch(resetTabAction); 

     } else { 
     jumpToIndex(index); 
     } 
    }}/> 
), 

編集: 私は今、インナーStackNavigatorをラップしているコンポーネントにDishesScreen.router = DishesStack.router;を追加しました。今度はルートと州のサブナビゲーターを見ることができます。しかしScreen1(Dish)はありません。ただ一つのルートがあります:DishList ...より良い私のコンポーネントを理解するための多分

のAppコンポーネントは、()レンダリング - >AppNavigator(TabNavigatorコンテナ - お買い得情報、料理、お気に入り)

料理コンポーネントのrender() - >DishesStack(StackNavigator - DishList、ディッシュ)

enter image description here

enter image description here

+0

は、第2のプレスにjumpToIndex火災のでしょうか? – bennygenel

+0

はい、2番目のプレスのコンソールにインデックスが正しく表示されていますが、NavigationActionsには何の効果もありません。DishesはTabの名前だけです。どこに "通信する"か "委任する"必要がありますStackNavigator?参照や何か他のものはありません... – rakete

+0

DishesはStackNavigatorのTab1またはScreen1ですか? – bennygenel

答えて

1

のために働いていた私は

<AppNavigator navigation={this.props.navigation} ..... /> 

<DishesStack navigation={this.props.navigation} .... /> 

..すべてのコンポーネントをナビゲーション小道具を伝承するために逃し、それは渡すこともneccessaryですナビゲータがコンポーネントでラップされている場合のルータ:

DishesScreen.router = DishesStack.router; 

このセクションを参照してください:Nesting Navigators

0

これは私

if (state.index === index) { 
    dispatch(NavigationActions.reset({ 
     index: 0, 
     actions: [NavigationActions.navigate({ routeName: 'Dishes })], 
    })); 
}else{ 
    jumpToIndex(index); 
} 
+0

私のために動作しません。私の編集をチェックできますか? – rakete

関連する問題