AsyncStorage使用
/**
* AsyncStorage是一个简单的、异步的、持久化的Key-Value存储系统,
*/
'use strict';
import React from 'react';
import ReactNative, {AsyncStorage} from 'react-native';
class StorageUtil {
/**
* 根据key获取json数值
* @param key
* @returns {Promise<TResult>}
*/
static get(key) {
return AsyncStorage.getItem(key).then((value) => {
if (value && value != '') {
const jsonValue = JSON.parse(value);
return jsonValue;
} else {
return null
}
}).catch(() => {
return null
});
}
/**
* 保存key对应的json数值
* @param key
* @param value
* @returns {Promise<string>}
*/
static save(key, value) {
return AsyncStorage.setItem(key, JSON.stringify(value));
}
/**
* 更新key对应的json数值
* @param key
* @param value
* @returns {Promise<TResult>|Promise.<TResult>|Promise<T>}
*/
static update(key, value) {
return AsyncStorage.get(key).then((item) => {
value = typeof value === 'string' ? value : Object.assign({}, item, value);
return AsyncStorage.setItem(key, JSON.stringify(value));
});
}
/**
* 删除key对应json数值
* @param key
* @returns {Promise<string>}
*/
static delete(key) {
return AsyncStorage.removeItem(key);
}
/**
* 删除所有配置数据
* @returns {Promise<string>}
*/
static clear() {
return AsyncStorage.clear();
}
}
export default StorageUtil;
/***** Storage *************************************************** */
/**
* 获取key对应的Storage数据
* @param key stirng类型
* @returns {*}
*/
get(key) {
return StorageUtil.get(key);
}
/**
* 保存key对应的Storage数据
* @param key
* @param value
* @returns {*}
*/
save(key, value) {
return StorageUtil.save(key, value);
}
/**
* 删除key对应的Storage数据
* @param key
* @returns {*}
*/
delete(key) {
return StorageUtil.delete(key);
}
/**
* 清除所有的Storage数据
* @returns {*}
*/
clear() {
return StorageUtil.clear();
}
存储获取
async getStorage() {
let logic = await super.get(logic);
if (!logic) {
// 如果是首次登录, 跳转到引导界面
name = 'Guide';
component = Guide
} else {
if (!logic.isGuide) {
// 如果没有引导
name = 'Guide';
component = Guide;
} else if (!logic.isLogin) {
// 如果没有登录
name = 'Login';
component = Login;
} else {
name = 'Main';
component = Main;
}
}
this.setState({
name: name,
component: component,
params: params,
modalVisible: false
});
this.timer && clearTimeout(this.timer);
}