欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

React Native AsyncStorage本地存储工具类

程序员文章站 2022-04-09 21:11:08
利用react-native组件asyncstorage,通过promise,保存本地数据,具体内容如下 import {asyncstorage} from...

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

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