我有两个StackNavigator。电影:
const MoviesStackNavigator = createStackNavigator({
Movies: Movies,
MovieDetails: MovieDetails,
},{
initialRouteName: 'Movies',
})
Run Code Online (Sandbox Code Playgroud)
和演员:
const ActorsStackNavigator = createStackNavigator({
Actors: Actors,
ActorDetails: ActorDetails,
},{
initialRouteName: 'Actors',
})
Run Code Online (Sandbox Code Playgroud)
我在TabNavigator中使用它们:
const RootTabs = createBottomTabNavigator({
Movies: {
screen: MoviesStackNavigator,
navigationOptions: {
tabBarLabel: 'Movies'
}
},
Actors: {
screen: ActorsStackNavigator,
navigationOptions: {
tabBarLabel: 'Actors'
}
},
})
Run Code Online (Sandbox Code Playgroud)
当用户更改选项卡时,我希望他到达该选项卡的根组件(Movies或Actors),而不是堆叠组件(MoviesDetails或ActorsDetails)。换句话说,当用户退出选项卡时,该选项卡中的StackNavigator应重置为根组件。
我的第一种方法是StackActions.reset
在初始化选项卡中的根组件时尝试重置其他选项卡(用户刚刚退出),但是该库至少以这种方式阻止了导航器之间的交互。
那么,有什么想法吗?
我的解决方案是使用tabBarOnPress
:
const RootTabs = createBottomTabNavigator({
Movies: {
screen: MoviesStackNavigator,
navigationOptions: {
tabBarLabel: 'Movies',
tabBarOnPress: ({navigation, defaultHandler}: any) => {
navigation.navigate('Actors')
defaultHandler()
},
}
},
Actors: {
screen: ActorsStackNavigator,
navigationOptions: {
tabBarLabel: 'Actors',
tabBarOnPress: ({navigation, defaultHandler}: any) => {
navigation.navigate('Movies')
defaultHandler()
},
}
},
})
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
885 次 |
最近记录: |