Проверьте токен пользователя в AuthLoadingScreen (экран приветствия в вашем случае).
И расходятся до SignUp
экрана или Home
в зависимости от токена пользователя.
Например ...
- Wrap
WelcomeScreen(AuthLoading)
, Auth(SignUp, SignIn)
и Home( and others screen)
- createStackNavigator
.
App.js
import { createSwitchNavigator, createStackNavigator } from 'react-navigation';
// Implementation of HomeScreen, OtherScreen, SignInScreen, AuthLoadingScreen
// goes here.
const AppStack = createStackNavigator({ Home: HomeScreen, Other: OtherScreen });
const AuthStack = createStackNavigator({ SignIn: SignInScreen });
export default createSwitchNavigator(
{
AuthLoading: AuthLoadingScreen,
App: AppStack,
Auth: AuthStack,
},
{
initialRouteName: 'AuthLoading',
}
);
- Запись проверочного токена пользователя в
constructor
из AuthLoadingScreen
Class.
AuthLoadingScreen.js
import React from 'react';
import {
ActivityIndicator,
AsyncStorage,
StatusBar,
StyleSheet,
View,
} from 'react-native';
class AuthLoadingScreen extends React.Component {
constructor(props) {
super(props);
this._bootstrapAsync();
}
// Fetch the token from storage then navigate to our appropriate place
_bootstrapAsync = async () => {
const userToken = await AsyncStorage.getItem('userToken');
// This will switch to the App screen or Auth screen and this loading
// screen will be unmounted and thrown away.
this.props.navigation.navigate(userToken ? 'App' : 'Auth');
};
// Render any loading content that you like here
render() {
return (
<View style={styles.container}>
<ActivityIndicator />
<StatusBar barStyle="default" />
</View>
);
}
}
Важная вещь - как обернуть экраны в навигации как стопку, ящик и касание.
И вы можете управлять стеком различными способами, как
- навигация: переход на другой экран
this.props.navigation.navigate('yourscreen')
- goBack: закрыть активный экран и вернуться назад
this.props.navigation.goBack()
Особенно больше контроля, когда экран включен в стек.
- popToTop: перейти на вершину стека
this.props.navigation.popToTop()
- толчок: ты будешь знать, что делать.
- pop:
- заменить: заменить текущий маршрут на новый
this.props.navigation.replace(yourscreen')
Ссылка: https://reactnavigation.org/docs/en/auth-flow.html