Способ навигации выглядит нормально, но на вашем месте я бы создал отдельные навигаторы стека для страниц входа и домашней страницы.
Если вы используете реагирующую навигацию, естьболее простой способ сделать это представлен в новых API.
import { createAppContainer, createSwitchNavigator } from 'react-navigation';
import { createStackNavigator } from 'react-navigation-stack';
export default createAppContainer(
createSwitchNavigator(
{
AuthLoading: AuthLoadingScreen,
App: "Your homepage screen",
Auth: "Your login screen",
},
{
initialRouteName: 'AuthLoading',
}
)
);
и в AuthLoadingScreen проверяют токен, который определяет, вошел ли пользователь в систему следующим образом
class AuthLoadingScreen extends React.Component {
componentDidMount() {
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>
<ActivityIndicator />
<StatusBar barStyle="default" />
</View>
);
}
}