Как объединить динамические маршруты и статические маршруты в реагировать родной - PullRequest
0 голосов
/ 23 октября 2019

Я создаю собственный мастер реагирования и хочу объединить статический маршрут и динамические маршруты мастера.

В настоящее время я использую навигацию реагирования, и основная проблема заключается в том, что у меня есть функция generateNavigatorэто создает динамические маршруты на основе реквизита, переданного компоненту Route.js, где существует функция. Я попытался переместить функцию в AppNavigator, где существуют статические маршруты, но навигатор должен быть функцией. Я запускаю приложение expo

Route.js

generateNavigator = () => {
  const { steps, title } = this.props;
  const navigationRoutes = {};
  steps.forEach((step, index) => {
    const routeOptions = { screen: step.component };
    navigationRoutes[step.routeName] = routeOptions;
  });

  const navigationOptions = {
    headerStyle: {
      backgroundColor: '#ffffff',
      paddingHorizontal: 5,
    },
    headerTintColor: '#111111',
    headerTitle: title,
  };

  return createAppContainer(createStackNavigator(navigationRoutes, { navigationOptions }));
}

AppNavigator.js

const MainStack = createStackNavigator(
  {
    Main: {
      screen: {
        MainTabNavigator,
      },
    },
    ...ModalStack
  },
  {
    mode: 'modal',
    headerMode: 'none',
  }
);


export default createAppContainer(
  createSwitchNavigator({
    AuthLoading: AuthLoading,
    Main: MainStack,
    Auth: AuthStack,
  }, {
    initialRouteName: 'AuthLoading',
  })
);

Я ожидаю, что приложение будет работать без предупреждения, но вместо этого яя получаю предупреждение «Вы должны явно отображать только один навигатор в вашем приложении». Как было сказано ранее, я попытался переместить generateNavigator() на AppNavigator, чтобы решить проблему, но безуспешно.

...