TabNavigator上的React Navigation logout按钮

时间:2017-09-18 17:50:11

标签: react-native react-navigation tabnavigator

我在TabNavigator内有一个StackNavigatorStackNavigator我有login视图和TabNavigator,其中包含其他屏幕)。 问题是,我必须在选项卡上制作类似“Logout”按钮的内容,只需重定向到Login视图即可。 如果我尝试简单地重定向到LoginViewTabBar仍会出现在屏幕底部,那不是我想要的。 有没有办法点击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'
});

1 个答案:

答案 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的版本)。