JavaScript

超轻量级php框架startmvc

React Native AsyncStorage本地存储工具类

更新时间:2020-06-12 09:30:01 作者:startmvc
利用react-native组件AsyncStorage,通过promise,保存本地数据,具体内容如下import{AsyncStorage}from'r

利用react-native组件AsyncStorage,通过promise,保存本地数据,具体内容如下


import {AsyncStorage} from 'react-native';

export default class StorageUtil {

 /**
 * 保存一个Json对象
 * @param key
 * @param value
 * @param callback
 */
 static async saveJsonObject(key, value) {
 return await this.saveString(key, JSON.stringify(value));
 }


 /**
 * 获取一个Json对象
 * @param key
 * @param defaultObject
 */
 static async getJsonObject(key, defaultObject) {
 let result=null;
 try{
 result=await this.getString(key,null);
 result=await JSON.parse(result);
 }catch (err){
 if(defaultObject){
 return Promise.resolve(defaultObject);
 }else{
 return Promise.reject(err);
 }
 }
 return result;

 }


 /**
 * 保存一个值
 * @param key
 * @param value
 */
 static async saveString(key, value) {
 if (key != null && value != null) {
 //Key 与Value 都不为空
 try {
 await AsyncStorage.setItem(key, value)
 } catch (err) {
 return Promise.reject(err)
 }
 return Promise.resolve(true);
 } else {
 return Promise.reject({"msg": "Key and value can not be null"});
 }
 }

 /**
 * 获取一个值
 * @param key
 * @param defaultValue
 */
 static async getString(key, defaultValue) {
 let result = null;
 let noDataError = {"msg": "No value found !"};
 if (key != null) {
 result = await AsyncStorage.getItem(key);
 // console.log('get string result',result,defaultValue);
 return result ? result : defaultValue!=null ? defaultValue : Promise.reject(noDataError);
 } else {
 if (defaultValue) {
 return Promise.resolve(defaultValue);
 } else {
 return Promise.reject(noDataError);
 }
 }

 }


 /**
 * 移除一个值
 * @param key
 */
 static async remove(key) {
 let result = true;
 try {
 result = await AsyncStorage.removeItem(key);
 } catch (err) {
 return Promise.reject(err)
 }
 return result;
 }


 /**
 * 获取所有已存储
 */
 static async getAllKeys() {
 let result=true;
 try {
 result = await AsyncStorage.getAllKeys();
 } catch (err) {
 return Promise.reject(err)
 }
 return result;
 }

}

外界调用

保存


StorageUtil.saveJsonObject(KEY_LOCAL_USER_INFO, user);

读取


StorageUtil.getJsonObject(KEY_LOCAL_USER_INFO).then(data=>{console.log(data))}

清除


StorageUtil.remove(KEY_LOCAL_USER_INFO)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

React Native AsyncStorage 本地存储