Tabs 单击两次时如何导航回 StackNavigator?
How to navigate back a StackNavigator when Tabs clicked twice?
我有一个带有三个选项卡的 TabNavigator。这三个选项卡中的每一个都是 StackNavigators。
如果用户单击同一个选项卡按钮两次,我如何才能将 StackNavigator 导航回来?
我目前的方法只是做....什么都不做..
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);
}
}}/>
),
编辑:
我现在将 DishesScreen.router = DishesStack.router;
添加到包装内部 StackNavigator 的组件。现在我可以在路线和状态中看到子导航器。但是 Screen1 (Dish) 不见了。只有一条路线:DishList...
也许为了更好地理解我的组件:
App Component render() -> AppNavigator (TabNavigator - Deals, Dishes, Favorites)
Dishes 组件 render() -> DishesStack (StackNavigator - DishList, Dish)
这对我有用
if (state.index === index) {
dispatch(NavigationActions.reset({
index: 0,
actions: [NavigationActions.navigate({ routeName: 'Dishes })],
}));
}else{
jumpToIndex(index);
}
我错过了将导航道具传递给组件的所有过程..
<AppNavigator navigation={this.props.navigation} ..... />
<DishesStack navigation={this.props.navigation} .... />
如果导航器被组件包裹,也需要通过路由:
DishesScreen.router = DishesStack.router;
查看此部分:Nesting Navigators
我有一个带有三个选项卡的 TabNavigator。这三个选项卡中的每一个都是 StackNavigators。
如果用户单击同一个选项卡按钮两次,我如何才能将 StackNavigator 导航回来?
我目前的方法只是做....什么都不做..
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);
}
}}/>
),
编辑:
我现在将 DishesScreen.router = DishesStack.router;
添加到包装内部 StackNavigator 的组件。现在我可以在路线和状态中看到子导航器。但是 Screen1 (Dish) 不见了。只有一条路线:DishList...
也许为了更好地理解我的组件:
App Component render() -> AppNavigator (TabNavigator - Deals, Dishes, Favorites)
Dishes 组件 render() -> DishesStack (StackNavigator - DishList, Dish)
这对我有用
if (state.index === index) {
dispatch(NavigationActions.reset({
index: 0,
actions: [NavigationActions.navigate({ routeName: 'Dishes })],
}));
}else{
jumpToIndex(index);
}
我错过了将导航道具传递给组件的所有过程..
<AppNavigator navigation={this.props.navigation} ..... />
<DishesStack navigation={this.props.navigation} .... />
如果导航器被组件包裹,也需要通过路由:
DishesScreen.router = DishesStack.router;
查看此部分:Nesting Navigators