React Native 如何通过使用存储迁移到登录到主页

uqcuzwp8  于 6个月前  发布在  React
关注(0)|答案(1)|浏览(60)

我已经写了setItem和getItem的代码,然后我存储在访问token.now我想检查用户是否已经登录到主页,然后如果我们从最近删除应用程序。如果我们打开应用程序,然后直接我必须移动到主页。

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

}
}

rggaifut

rggaifut1#

试试这个
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);
    }


我不能理解你的代码,所以我张贴我的代码,希望这将有助于你。

相关问题