React Native: попытка понять логику маршрутизации - PullRequest
0 голосов
/ 09 июня 2019

Действительно новый, чтобы реагировать на родную здесь. Попытка достичь следующего потока приложения:

Запуск приложения -> Проверка AuthToken -> Проверка ProfileData -> Главное приложение

Для проверки AuthToken: - Если токен существует, добавьте его в заголовки для будущих запросов - Если токена нет, перенаправьте на страницу входа, успешный вход сохранит токен в SecureStore, а затем добавит его в заголовки для будущих запросов

Для проверки данных профиля: - Если нет ProfileData, сделать запрос API, записать в хранилище, перейти в главное приложение - Если ProfileData существует, извлеките ее и передайте в главное приложение

В настоящее время я использую react-native-router-flux для загрузки компонента AuthCheck, который в основном выполняет это:

    async componentWillMount() {
        await this.tokenCheck();
    }
    async tokenCheck(){
        console.log("Checking for token..");
        let token_exist = await SecureStore.getItemAsync("AuthToken");
        if(!token_exist) {
            Actions.auth();
        }else{
            Actions.main();
        }
    }

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

1 Ответ

0 голосов
/ 09 июня 2019

Вы даже использовали реагирующую навигацию ?

Это так легко использовать и изучать, я очень рекомендую его для вас.Также он имеет очень хорошую документацию

. Это простой способ проверить аутентификацию в первом, а также сохранить токен в AsyncStorage и передать его в качестве реквизита на другие маршруты:

export default mainNavigation = createSwitchNavigator(
  {
    AuthLoading: AuthLoadingScreen,
    Home: HomeStack ,
    SignIn: SignInScreen ,
    Verification: VerificationScreen,
  },
  {
    initialRouteName: 'AuthLoading',
  }
);

Как вы можете видеть AuthScreen - это начальный маршрут

. В AuthScreen вы должны проверить AsyncStorage, если токен существует, и затем проверить этот токен, если токен недействителен или не существует, перейдите к пользователю:пользователь на SignInScreen и там вы можете установить параметр токена в AsyncStorage

Вы должны использовать createStackNavigator для HomeScreen, чтобы передать токен в качестве реквизита

...