Как я могу перейти к экрану входа в систему, когда пользователи аутентифицированы?

У меня есть корневой StackNavigator, в котором есть два других навигатора 1 навигатор стека (вход, регистрация) 2 навигатор вкладок (дом, профиль, настройки)

поэтому, когда пользователь успешно входит в систему, как я могу перейти к tabNavigator из rootNavigator?

import React from 'react';
import { createStackNavigator, createAppContainer } from 'react-navigation'

import authNavi from './AuthRoute';  /// this is StackNavigator with login signup screen

import appNavi from './AppRoute' /// this is tabNAvigator with profile home setting screen

const RootRoute = createStackNavigator({ 

    auth: {screen: authNavi },
    app: {screen: appNavi }
})

const RootNavi = createAppContainer(RootRoute);
export default RootNavi;  /// this is rootNavigator whih is rendered in App.js

вот изображение App.js и RootRouter


person akash rauniyar    schedule 28.03.2019    source источник
comment
ты пробовал this.props.navigation.navigate('app'); ?   -  person Hend El-Sahli    schedule 28.03.2019


Ответы (2)


Вы можете перейти от стека аутентификации к tabNavigator:

this.props.navigation.navigate('app');

Предложение Я предлагаю вам заменить основной StackNavigator на SwitchNavigator ... потому что после того, как пользователь успешно войдет в систему, вам больше не понадобится доступ к вашему потоку аутентификации.

person Hend El-Sahli    schedule 28.03.2019

Этого можно добиться с помощью Switch Navigator.

импортировать createSwitchNavigator из react-navigation

eg:

import {
  createAppContainer,
  createStackNavigator,
  ...
  createSwitchNavigator
} from "react-navigation";

После этого добавьте переключатель навигатора.

...
const switchNavigator = createSwitchNavigator(
  {
    LoginStack: authNavi,
    AppTabs: appNavi
  },
  { headerMode: "none", initialRouteName: "LoginStack" }
);

const App = createAppContainer(switchNavigator);

export default App;

И когда вы хотите перейти домой, используйте это

this.props.navigation.navigate("AppTabs");

Это переключит навигацию на навигацию TabBar.

person Jebin Benny    schedule 28.03.2019