如何使用异步存储移动到登录主页
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 我的代码所以希望这会对你有所帮助。
我已经使用异步存储为 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 我的代码所以希望这会对你有所帮助。