Как перейти к входу в дом с помощью асинхронного хранилища - PullRequest
0 голосов
/ 07 февраля 2019

Я написал код для setItem и getItem, используя асинхронное хранилище, затем я сохранил для доступа к token.now. Я хочу проверить, не вошел ли пользователь на домашнюю страницу, затем, если мы удалим приложение из recents.Если мы откроем приложение, то напрямуюмне нужно перейти на домашнюю страницу.

app.js

import React from 'react';
import { createStackNavigator ,createAppContainer } from 'react-navigation';
import  Homescreen  from './components/Homescreen';
import  Loginscreen  from './components/Loginscreen'
import Forgetpassword from './components/Forgotpassword';


const Navstack = createStackNavigator({
// Home: Homescreen,
// Login:Loginscreen
 Login : { screen : Loginscreen},
 Home : { screen: Homescreen },
 Password :{ screen: Forgetpassword}

 });

 const App = createAppContainer(Navstack);
 export default App;

login.js:

 //storing response in accesstoken

 storeToken(responseData)
  {
 AsyncStorage.setItem(ACCESS_TOKEN, responseData, (err)=> {
 if(err){
        console.log("an error");
        throw err;
      }
      console.log("success");
    }).catch((err)=> {
        console.log("error is: " + err);
    });
  }

home.js:

 async getToken() {
 try {
  let accessToken = await AsyncStorage.getItem(ACCESS_TOKEN);
  if(!accessToken) {
      this.props.navigation.navigate('Login');
      // console.warn(accessToken);

  } else {
      this.setState({accessToken: accessToken})
      console.warn(accessToken);
  }
} catch(error) {
    console.log("Something went wrong");
    // console.warn("Something went wrong");
    this.props.navigation.navigate('Login');

}
}

1 Ответ

0 голосов
/ 07 февраля 2019

Попробуйте это

login.js:

fetch("YOUR URL", {
          method: 'POST',
          headers: {
            Accept: 'application/json',
            'Content-Type': 'application/json',
          },
          body: JSON.stringify({
            "client_id": client_id, 
            "username": email,      
            "password": pass,
            "grant_type": "password"
          }),
        }).then((response) => response.json())
        .then(async(response) => {
            this.setState({isLoading: false});
            if(response.status == "success"){
                navigate("Home");
                await AsyncStorage.setItem('isLogin', 'true');
            }else{
                alert(JSON.stringify(response))
            }
        })
        .catch((error) => {
            alert(error);
        });

И я использую заставку перед входом в систему, затем добавьте

splash.js:

async componentDidMount(){
        const isLogin = await AsyncStorage.getItem('isLogin');
        setTimeout(() => {
            this.setState({ isLoading: false })
            const { navigate } = this.props.navigation;
            if(isLogin != null || isLogin == "true")
                navigate("Home");
            }else{
                navigate("Login");
            } 
        },2000);
    }

Я не смог понять ваш код, поэтому я публикую свой код, поэтому надеюсь, что это поможет вам.

...