反应导航从TabNavigator导航

时间:2018-11-01 22:02:00

标签: react-native react-navigation

我正在将React Navigation用于我的React本机应用程序。

我的根堆栈如下:

const AuthStack = createStackNavigator({
  Authentication: {
    screen: Authentication,
  },
  Login: {
    screen: Login,
  },
  Register: {
    screen: Register,
  },
});

const AppStack = createStackNavigator({
  Main: {
    screen: Main,
  },
});

export const RootNav = createSwitchNavigator(
  {
    AuthLoading: {
      screen: AuthLoadingScreen,
    },
    App: {
      screen: AppStack,
    },
    Auth: {
      screen: AuthStack,
    },
  },
  {
    initialRouteName: 'AuthLoading',
  }
);

Main是一个标签导航器,具有3个堆栈导航器,如下所示:

const FeedStack = createStackNavigator({
  Feed: {
    screen: Feed,
  },
});

const ExploreStack = createStackNavigator({
  Explore: {
    screen: Explore,
  },
});

const AccountStack = createStackNavigator({
  Account: {
    screen: Account,
  },
});

const NavBar = createBottomTabNavigator(
  {
    Feed: {
      screen: FeedStack,
    },
    Explore: {
      screen: ExploreStack,
    },
    Account: {
      screen: AccountStack,
    },
  }
}

我的问题是帐户堆栈。在“帐户”屏幕下找到了注销按钮,但是当我打电话给this.props.navigation.navigate('Auth')时,什么也没发生。

我尝试使用this.props.navigation.reset()this.props.navigation.dispatch(),但它们都不起作用。

有人知道用户注销后如何切换回身份验证堆栈吗?

1 个答案:

答案 0 :(得分:1)

我认为我的情况与此类似,并且代码中有一个最近记录的功能,但是该功能未导出,并且仅在5天前已修复-似乎对我有用。

导入SwitchActions ...

import { SwitchActions } from 'react-navigation;

...并使用jumpTo方法:

this.props.navigation.dispatch(SwitchActions.jumpTo({ routeName: 'Auth' }));

我正在嵌套在堆栈导航器中深处的组件中执行此操作,以返回到父开关导航器中的上一个屏幕,因此也许对您有用。

此处引用:https://reactnavigation.org/docs/en/switch-actions.html#jumpto