Объединение двух навигаторов в react navigation

У меня три навигатора. Два из них объединены в третий главный навигатор.

Первый навигатор:

// Stack Navigator
const AppStackNavigator = createStackNavigator(
  {
    Login: Login,
    HomeScreen: HomeScreen,
    SignUp: SignUp,
    ForgotPassword: ForgotPassword,
  },
  {
    initialRouteName: 'Login',
  }
);

Второй навигатор:

// Tab Navigator
const BottomNavigator =  createBottomTabNavigator(
  {
    Home: HomeScreen,
    MyJobs: MyJobs,
    MyProfile: MyProfile,
    Settings: Settings,
  },
  {
    // configuration
  }
);

Комбинирование навигаторов:

// Combining Navigators
const RootStack = createStackNavigator(
  {
    AppStackNavigator: AppStackNavigator,
    BottomNavigator: BottomNavigator
  }
)

Однако я не могу это осуществить. Я продолжаю получать эту ошибку на своем эмуляторе Android:

The component for route 'AppStackNavigator' must be a React component. For example:

import MyScreen from './MyScreen';
...
AppStackNavigator: MyScreen,
}

You can also use a navigator:

import MyNavigator from './MyNavigator';
...
AppStackNavigator: MyNavigator,
}

Пробую использовать комбинированный навигатор. Что я делаю неправильно?

Лучше будет показать полный код.

Jeff Gu Kang 31.10.2018 15:13
2
1
1 952
1

Ответы 1

Ваш код странный, особенно конфигурация маршрута ... вы смотрели реактивно-навигационная документация?

попробуйте заменить YourScreenName на {screen: YourScreenName }. для каждого из ваших навигаторских маршрутов.

бывший:

// Stack Navigator
const AppStackNavigator = createStackNavigator(
  {
    Login: {screen: Login},
    HomeScreen: {screen: HomeScreen},
    SignUp: {screen: SignUp},
    ForgotPassword: {screen: ForgotPassword},
  },
  {
    initialRouteName: 'Login',
  }
);

Я попробовал изменить маршрут в соответствии с вашей инструкцией, но все равно получаю ту же ошибку.

Surendra Pathak 31.10.2018 12:24

Вы делали одно и то же изменение для каждого навигатора? (включая ваш RootStack?)

Vinzzz 31.10.2018 14:09

Я совершал глупую ошибку. После нескольких попыток отладки я понял, что объявляю RootStack раньше, чем AppStackNavigator и BottomNavigator. РЖУ НЕ МОГУ. Перемещение объявления Rootstack в конец двух других маршрутов решило проблему.

Surendra Pathak 01.11.2018 05:02

Ой! Тогда сообщение об ошибке действительно не помогло. Рад, что вы смогли это решить :)

Vinzzz 01.11.2018 10:30

Другие вопросы по теме