我在TabNavigator
内有一个StackNavigator
(StackNavigator
我有login
视图和TabNavigator
,其中包含其他屏幕)。
问题是,我必须在选项卡上制作类似“Logout
”按钮的内容,只需重定向到Login
视图即可。
如果我尝试简单地重定向到LoginView
,TabBar
仍会出现在屏幕底部,那不是我想要的。
有没有办法点击TabBar
按钮并返回初始StackNavigator
? (就像OnPress
属性或类似的东西)。
这是我的路由器
const tab_bar = TabNavigator({
Home: {
screen: HomeScreen
},
Logout: {
screen: LoginView // this just show the view but the tabBar still appearing
},
});
const Login = StackNavigator({
login: {
screen: LoginView,
},
List: {
screen: tab_bar
,navigationOptions: {header:null}
}
},
{
initialRouteName: 'login'
});
答案 0 :(得分:2)
完成!使用tabBarOnPress属性和Navigation Actions。
const tab_bar = TabNavigator({ // This tabNavigator is inside a stackNavigator, wich contains the 'login' view
Home: {
screen: Home
},
Logout: {
screen: Logout // Empty screen, useless in this specific case
,navigationOptions: ({navigation}) => ({
tabBarOnPress: (scene, jumpToIndex) => {
return Alert.alert( // Shows up the alert without redirecting anywhere
'Confirmation required'
,'Do you really want to logout?'
,[
{text: 'Accept', onPress: () => { navigation.dispatch(NavigationActions.navigate({ routeName: 'login' }))}},
{text: 'Cancel'}
]
);
},
})
},
});
当用户点击tabBar上的logout
按钮时,会显示一个警报以确认操作,然后用户是否接受重定向到登录视图。
注意(2009年9月22日):要使用tabBarOnPress属性,请下载master branch version(不是NPM的版本)。