首页 > 开发 > JS > 正文

React Native AsyncStorage本地存储工具类

2024-05-06 16:40:31
字体:
来源:转载
供稿:网友

利用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)

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


注:相关教程知识阅读请移步到JavaScript/Ajax教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表