如何使用异步存储移动到登录主页

How to move to login to home by using async storage

我已经使用异步存储为 setItem 和 getItem 编写了代码然后我存储以访问 token.now 我想检查用户是否已经登录到主页,然后如果我们从 recents.if 我们打开应用程序然后直接我必须转到主页。

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');

}
}

试试这个

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);
    }

我无法理解你的代码所以我 post 我的代码所以希望这会对你有所帮助。