我使用React Navigation在移动应用程序中进行导航,并且具有如下结构导航:
const AccountStack = createStackNavigator(
{
Account: AccountView,
...
},
{
initialRouteName: 'Account',
headerMode: 'screen',
....
}
)
const SearchUsersStack = createStackNavigator(
{
SearchUsers: SearchUsersView,
UserProfile: UserProfileView,
FriendsOfUser: FriendsOfUserView
},
{
...
}
)
const AccountModalStack = createStackNavigator(
{
AccountStack: AccountStack,
SearchUsersStack: SearchUsersStack,
},
{
initialRouteName: 'AccountStack',
headerMode: 'none',
mode: 'modal',
}
)
const MainApp = createBottomTabNavigator(
{
MainHome: HomeStack,
MainPlay: PlayStack,
MainAccount: AccountModalStack
},
{
...
}
)
如果我在“搜索用户”堆栈中(例如,在SearchUserView中),然后单击底部选项卡导航器中的“帐户”图标,则该堆栈将正确关闭,并且我将返回到“帐户”视图。
但是,如果我处于AccountStack的其中一条路由中,并且单击底部选项卡导航器中的“ Account”图标,则堆栈不会关闭。因此,如果我在帐户堆栈中距离很远,则必须返回后退箭头。
为什么当我在SearchUserStack中而不在AccountStack中时有效?
希望能找到帮助!
谢谢 !
维克多
最佳答案
您可以覆盖单击选项卡时发生的情况,可以通过选项卡栏中每个导航器的navigationOptions
进行操作。
const AccountModalStack = createStackNavigator(
{
AccountStack: AccountStack,
SearchUsersStack: SearchUsersStack,
// ...
},
{
initialRouteName: 'AccountStack',
navigationOptions: {
tabBarOnPress: ({ navigation }) => {
navigation.navigate({
routeName: 'AccountStack', // navigates to the initial route
action: navigation.popToTop(), // go to the top of the stack of that route
})
},
// ...
},
// ...
}
)
默认情况下,选项卡可能会尝试简单地导航到初始路由,而不重置堆栈。