TabNavigator 上的 React Navigation 注销按钮

React Navigation logout button on TabNavigator

我在 StackNavigator 中有一个 TabNavigator(在 StackNavigator 中我有 login 视图和 TabNavigator,其中包含其他屏幕). 问题是我必须在选项卡上制作类似“Logout”的按钮,它只是重定向到 Login 视图。 如果我尝试简单地重定向到 LoginViewTabBar 仍然出现在屏幕底部,这不是我想要的。 有什么方法可以点击TabBar按钮,然后return到初始的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'
});

完成!使用 tabBarOnPress property and the 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 按钮时会显示一个警告以确认操作,然后如果用户接受重定向到登录视图。

注意 (22/09/2017): 要使用 tabBarOnPress 属性 下载 master branch version(还不是 NPM 的版本)。