web-dev-qa-db-fra.com

définir le 'initialRouteName' dynamique dans react-native

la question est simple Je sais qu'il y a beaucoup de réponses disponibles pour la même question mais j'ai réglé différemment ma propre App.js fichier j'ai essayé presque tous mais sans succès.

donc mon App.js ressemble à ça

import React, { Component } from 'react';
import {
  Platform,
  StyleSheet,
  Text,
  View,
  StatusBar
} from 'react-native';
import { createStackNavigator  } from 'react-navigation';
import { Header, Button, Spinner } from './src/components/comman';
import SplashScreen from 'react-native-splash-screen';
import LoginForm from './src/components/LoginForm';
import SignupForm from './src/components/SignupForm';
import Home from './src/components/Home';
import ForgetPassword from './src/components/ForgetPassword';


import { YellowBox } from 'react-native';
YellowBox.ignoreWarnings(['Warning: isMounted(...) is deprecated', 'Module RCTImageLoader']);
const App = createStackNavigator ({
  Login: { screen: LoginForm },
  Home: { screen: Home },
  Signup: { screen: SignupForm },
  ForgetPassword: { screen : ForgetPassword },
  },
  { 
  initialRouteName: 'Login',
  });

export default App;

Maintenant, je stocke l'état de connexion dans AsyncStorage dans mon LoginForm.js comme ça

.
.
AsyncStorage.setItem('isLoggedIn', 'true').then((a) => {
    this.onLoginSuccess(responseData.user_id);
});
.
.

alors maintenant je veux définir initialRouteName en fonction de mon élément de stockage local. Simple si isLoggedIn est true alors initialRouteName : Home autrement initialRouteName : Login

Simple mais ne savez pas comment l'utiliser dans myApp.js

S'il vous plaît, aidez :)

9
Kishan Oza

Comme vous pouvez le voir ici :

Si vous devez définir initialRouteName comme accessoire, c'est parce qu'il y a des données que vous devez récupérer de manière asynchrone avant de rendre la navigation de l'application. une autre façon de gérer cela est d'utiliser un commutateur de navigation et d'avoir un écran que vous affichez lorsque vous récupérez les données asynchrones, puis accédez à l'itinéraire initial approprié avec des paramètres si nécessaire. voir docs pour un exemple complet de cela.

Et ceci est un ouvert RFC

METTRE À JOUR

Jetez un oeil à ici .

Vous trouverez plus de description!

8
MohamadKh75