双击 BottomTabNavigator 的奇怪行为 - React Navigation
Weird behaviour with Double Tapping BottomTabNavigator - React Navigation
我在我的移动应用程序中使用 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
},
{
...
}
)
如果我在 "search User" 堆栈中(例如,在 SearchUserView 中)并单击底部选项卡导航器中的 "Account" 图标,堆栈将正确关闭,我将 return 到我的 "account" 视图。
但是,如果我在我的 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
})
},
// ...
},
// ...
}
)
默认情况下,选项卡可能会尝试简单地导航到初始路线,而不重置堆栈。
我在我的移动应用程序中使用 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
},
{
...
}
)
如果我在 "search User" 堆栈中(例如,在 SearchUserView 中)并单击底部选项卡导航器中的 "Account" 图标,堆栈将正确关闭,我将 return 到我的 "account" 视图。
但是,如果我在我的 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
})
},
// ...
},
// ...
}
)
默认情况下,选项卡可能会尝试简单地导航到初始路线,而不重置堆栈。