SwitchNavigator с реактивной навигацией 5 - PullRequest
2 голосов
/ 25 февраля 2020

С помощью реакции-навигации 4 я смог импортировать и использовать switchNavigator из пакета «реагировать-навигация».

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

import MainTabNavigator from "./MainTabNavigator";
import LoginScreen from "../screens/LoginScreen";
import AuthLoadingScreen from "../screens/AuthLoadingScreen";

export default createAppContainer(
  createSwitchNavigator(
    {
      App: MainTabNavigator,
      Auth: AuthLoadingScreen,
      Login: createStackNavigator({ Login: LoginScreen })
    },

    {
      initialRouteName: "Auth"
    }
  )
);

В реагирующей навигации 5 я больше не вижу createSwitchNavigator в пакете. Документация также не помогает. Не рекомендуется ли использовать сейчас? Мой пример использования - показать экран входа в систему до того, как пользователь войдет в систему, и переключиться на приложение после того, как пользователь войдет в систему. React-navigation привела пример потока аутентификации , но возможно ли использовать switchNavigator - который выглядит много проще.

1 Ответ

1 голос
/ 26 февраля 2020

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

Извлечь следующий пример:

import React from 'react';
import {useSelector} from "react-redux";
import {NavigationContainer} from "@react-navigation/native";

import { AuthNavigator, MyCustomNavigator } from "./MyCustomNavigator";

const AppNavigator = props => {
    const isAuth = useSelector(state => !!state.auth.access_token);

    return (
        <NavigationContainer>
            { isAuth && <MyCustomNavigator/>}
            { !isAuth && <AuthNavigator/>}
        </NavigationContainer>
    );
};
export default AppNavigator;

строки внутри NavigationContainer полностью заменяют старый коммутатор навигатора.

...