DrawerNavigator перенаправляет на первый маршрут при открытии - PullRequest
1 голос
/ 09 апреля 2020

// 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 Ответ

1 голос
/ 09 апреля 2020

Да, это действительно правильно. Но вы понимаете, как должен работать DrawerNavigator. Вы не можете открыть ящик, если вы не в ящике.

Я вижу, что у вас есть HomeScreen, определенный в 2 навигаторах. И у меня есть ощущение, что вы хотите иметь возможность перемещаться от Home к / от MyAccount, используя DrawerNavigator, что означает, что оба эти маршрута должны быть внутри DrawerNavigator, и вы хотите, чтобы HomeScreen был первый экран, который виден по умолчанию.

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, а при открытии ящика просто отобразится ящик, и вы автоматически не перейдете к MyAccountScreen.

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...