Как открыть начальный экран в приложении React Native на основе значения AsyncStorage? - PullRequest
0 голосов
/ 13 февраля 2019

Я новичок в React-native.Я создаю приложение с 1. модулем регистрации пользователей AppNavigator и 2. контентной частью приложения TabNaviagtor

Когда пользователь входит в систему в первый раз, я сохраняю учетные данные пользователя в AsyncStorageв реакции-родной.Со следующего раза, когда будут доступны учетные данные, должна открыться страница с контентом (TabNavigator), в противном случае откроется страница AppNavigator.

Пожалуйста, помогите, как мне этого добиться?

App.Js

import React, {Component} from 'react';
import {Platform, StyleSheet, Text, View,ImageBackground} from 'react-native';
import AppNavigator from './Components/AppNavigator/AppNavigator'
import bgImage  from './Components/Assets/Login_BG_Image.png'
import TabNavigator from './Components/TabNavigator/TabNavigator';
import {AsyncStorage} from 'react-native';

export default class App extends Component {

  state = {
    isLogin : false
  }

  loginHandler = async() =>
  {
    console.log('isLogin')
    const isLogin = await AsyncStorage.getItem('emailID')
    console.log(isLogin + 'value')
    if (isLogin !== undefined) {
      console.log('Is Login Already Done show  TabBar')
      return (
        <TabNavigator />
      );
    }else 
    {
      console.log('Show Login Page')
      return (
        <AppNavigator />
      );
    }
  }

  render() {
    return (
      this.loginHandler()
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex : 1,
    justifyContent: 'center',
    alignItems: 'center',
  },
  welcome: {
    fontSize: 20,
    textAlign: 'center',
    margin: 10,
  },
  instructions: {
    textAlign: 'center',
    color: '#333333',
    marginBottom: 5,
  },
  bgImage_container : {
    flex : 1,
    width : '100%',
    height : '100%'    
  }
});

Это ошибка, которую я получаю

Если я изменю код

loginHandler = () =>
  {
    console.log('isLogin')
    const isLogin =  AsyncStorage.getItem('emailID')
    console.log(isLogin + 'value')
    if (isLogin !== undefined) {
      console.log('Is Login Already Done show  TabBar')
      return (
        <TabNavigator />
      );
    }else 
    {
      console.log('Show Login Page')
      return (
        <AppNavigator />
      );
    }
  }

isLogin, получая как обещание Объект

isLogin.value отображается как неопределенное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...