这两天体验已上线的APP发现,不管APP是否是登录状态,只要杀死APP的进行,就必须重新登录。再体验一下淘宝APP,完全不需要登录。于是乎,便请教了下百度老师,经过一番折腾,我的APP也有此功能啦。故分享出来,供大家参考和指导
一、用AsyncStorage存储登录后的用户信息
import {
AsyncStorage,
} from 'react-native';
login = () => {
const { loginName, loginPassword } = this.state;
if (!loginName) {
Toast.message('手机号码不能为空', 2500);
return;
}
if (loginName.length != 11) {
Toast.message('手机号码长度为11位', 2500);
return;
}
if (loginPassword.length < 6) {
Toast.message('密码长度不能低于6位', 2500);
return;
}
let params = {
phone: loginName,
password: loginPassword
};
HttpUtils.get(Service.login, params).then((res) => {
// 用AsyncStorage存储登录后的用户信息
AsyncStorage.setItem('user', JSON.stringify(res.data)).then(() => {
store.token.setToken(res.data.accessToken);
store.token.setUser(res.data);
NavigationService.navigate("HomePage", {});
this.props.store.setUser(res.data.username);
});
}).catch((error) => {
Toast.message(error.message, 2500);
});
}
二、在app.js的componentDidMount中获取AsyncStorage存储信息
import {
AsyncStorage,
} from 'react-native';
componentDidMount() {
this.getStoreData();
}
getStoreData = async () => {
try {
const value = await AsyncStorage.getItem('user');
if (value !== null && JSON.parse(value).accessToken) {
const obj = JSON.parse(value);
store.token.setToken(obj.accessToken);
store.token.setUser(obj);
NavigationService.navigate("HomePage", {});
this.props.store.setUser(obj.username);
} else {
this.reset('Login');
}
} catch (error) {
this.reset('Login');
}
}
三、注销登录时,清除AsyncStorage
import {
AsyncStorage,
} from 'react-native';
AsyncStorage.removeItem('user');