Реагировать Навигация отойти от TabNavigator - PullRequest
0 голосов
/ 02 ноября 2018

Я использую React Navigation для моего собственного приложения реакции.

Мой корневой стек выглядит следующим образом:

const AuthStack = createStackNavigator({
  Authentication: {
    screen: Authentication,
  },
  Login: {
    screen: Login,
  },
  Register: {
    screen: Register,
  },
});

const AppStack = createStackNavigator({
  Main: {
    screen: Main,
  },
});

export const RootNav = createSwitchNavigator(
  {
    AuthLoading: {
      screen: AuthLoadingScreen,
    },
    App: {
      screen: AppStack,
    },
    Auth: {
      screen: AuthStack,
    },
  },
  {
    initialRouteName: 'AuthLoading',
  }
);

Main - это навигатор с вкладками с 3 стековыми навигаторами:

const FeedStack = createStackNavigator({
  Feed: {
    screen: Feed,
  },
});

const ExploreStack = createStackNavigator({
  Explore: {
    screen: Explore,
  },
});

const AccountStack = createStackNavigator({
  Account: {
    screen: Account,
  },
});

const NavBar = createBottomTabNavigator(
  {
    Feed: {
      screen: FeedStack,
    },
    Explore: {
      screen: ExploreStack,
    },
    Account: {
      screen: AccountStack,
    },
  }
}

Моя проблема связана со стеком учетных записей. Кнопка выхода из системы находится под экраном учетной записи, но когда я звоню this.props.navigation.navigate('Auth'), ничего не происходит.

Я пытался использовать this.props.navigation.reset() и this.props.navigation.dispatch(), но ни один из них не работал.

Кто-нибудь знает, как я могу переключиться обратно в стек аутентификации, когда пользователь вышел из системы?

1 Ответ

0 голосов
/ 23 мая 2019

Я думаю, что моя ситуация была похожей, и недавно была задокументирована особенность, которая была в коде, но функция не экспортировалась, и это было исправлено всего 5 дней назад - кажется, она работает для меня.

Импорт SwitchActions ...

import { SwitchActions } from 'react-navigation;

... и использовать метод jumpTo:

this.props.navigation.dispatch(SwitchActions.jumpTo({ routeName: 'Auth' }));

Я делаю это в компоненте, вложенном глубоко в навигатор стека, чтобы вернуться к предыдущему экрану в навигаторе родительского переключателя, так что, возможно, он будет работать для вас.

Ссылка здесь: https://reactnavigation.org/docs/en/switch-actions.html#jumpto

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