DrawerNavigator在打开时重定向到第一条路线

时间:2020-04-09 11:10:46

标签: react-native react-navigation

// AppContainer.js

const AuthNavigator = createStackNavigator(...code);

const DrawerNavigator = createDrawerNavigator(
  {
    MyAccount: MyAccountScreen,
    Home: HomeScreen,
  }
);

const AppNavigator = createStackNavigator(
  {
    Home: HomeScreen,
    MyAccount: MyAccountScreen,
  }
);

const AppContainer = createAppContainer(
  createSwitchNavigator(
    {
      AuthNavigator,
      AppNavigator,
      DrawerNavigator,
    },
    {
      initialRouteName: AuthNavigator,
    }
  )
);

//我打电话给HomeScreen.js:

onPress={() =>
  this.props.navigation.dispatch(DrawerActions.openDrawer())
}

它将打开模式,但始终自动进入MyAccountScreen,而无需触摸任何内容。预期的行为只是打开模态。

1 个答案:

答案 0 :(得分:1)

是的,这实际上是正确的。但是,您在理解DrawerNavigator的工作方式时会遇到一些麻烦。如果您不在抽屉上,则无法打开抽屉。

我看到您在2个导航器中定义了HomeScreen。而且我觉得您希望能够使用HomeMyAccountDrawerNavigator导航,这意味着这两个路线都必须在{{1}之内},并且您希望HomeScreen成为默认情况下第一个可见的屏幕。

DrawerNavigator

您已经拥有哪种。您的误解是,对于当前的路线,您不需要const DrawerNavigator = createDrawerNavigator( { Home: HomeScreen, MyAccount: MyAccountScreen, } ); ,只需将上面的名称重命名为AppNavigator,并且导航配置应如下所示:

AppNavigator

就是这样。现在,当您导航到const AppNavigator = createDrawerNavigator( { Home: HomeScreen, MyAccount: MyAccountScreen, } ); const AppContainer = createAppContainer( createSwitchNavigator( { AuthNavigator, AppNavigator, DrawerNavigator, }, { initialRouteName: AuthNavigator, } ) ); 时,第一个显示的路线将是AppNavigator,打开抽屉将仅显示抽屉,而不会自动将您导航到Home

相关问题