Реагируй Навигация - Переход между вкладками - PullRequest
2 голосов
/ 11 апреля 2019

Здравствуйте, ребята, у меня есть 5 Контейнеров на моей панели вкладок, и я хотел бы знать, есть ли возможность вернуться на главный экран, если я выберу другой контейнер вкладок.

Итак, у меня есть следующее

https://snack.expo.io/@react-navigation/stacks-in-tabs-v3

Находясь на вкладке Home, я нажимаю Go to Details, а затем переключаюсь на вкладку Settings.Если я вернусь к контейнеру Home, я хочу увидеть экран по умолчанию, который HomeScreen

Любая опция?

Ответы [ 2 ]

0 голосов
/ 11 апреля 2019

Вы можете переопределить tabBarOnPress из navigationOptions каждого StackNavigator следующим образом:

const stacks = [
  { Home: HomeScreen, Details: DetailsScreen },
  { Settings: SettingsScreen, Details: DetailsScreen }
].reduce((stacksObj, stack) => {
  const initialRoute = Object.keys(stack)[0];
  stacksObj[initialRoute] = createStackNavigator(
    stack,
    {
      navigationOptions: {
        tabBarOnPress: ({ navigation }) => navigation.navigate({
          routeName: initialRoute,
          action: navigation.popToTop()
        })
      }
    }
  );
  return stacksObj 
}, {});

export default createAppContainer(createBottomTabNavigator(
  stacks,
  { /* same defaultNavigationOptions as the snack example */ }
));
0 голосов
/ 11 апреля 2019

Потому что ваш DetailScreen вложен в стек Home, вы должны перейти еще на один уровень к этому экрану

  _navigateHome = () => {
    const navigateAction = NavigationActions.navigate({
      routeName: 'Home',
      action: NavigationActions.navigate({ routeName: 'Home' }),
    });
    this.props.navigation.dispatch(navigateAction);
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...