React Native AsyncStorage本地存储工具类


Posted in Javascript onOctober 24, 2017

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

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

Javascript 相关文章推荐
用JavaScript脚本实现Web页面信息交互
Dec 21 Javascript
javascript setTimeout()传递函数参数(包括传递对象参数)
Apr 07 Javascript
js给网页加上背景音乐及选择音效的方法
Mar 03 Javascript
JavaScript实现经典排序算法之选择排序
Dec 28 Javascript
jQuery查找和过滤_动力节点节点Java学院整理
Jul 04 jQuery
angularjs 缓存的使用详解
Mar 19 Javascript
Angularjs中的$apply及优化使用详解
Jul 02 Javascript
jQuery实现的点击显示隐藏下拉菜单功能完整示例
May 17 jQuery
JavaScript剩余操作符Rest Operator详解
Jul 20 Javascript
解析vue、angular深度作用选择器
Sep 11 Javascript
JsonServer安装及启动过程图解
Feb 28 Javascript
了不起的11个JavaScript代码重构最佳实践小结
Jan 11 Javascript
React Native验证码倒计时工具类分享
Oct 24 #Javascript
详解vue + vuex + directives实现权限按钮的思路
Oct 24 #Javascript
React Native实现地址挑选器功能
Oct 24 #Javascript
Angular js 实现添加用户、修改密码、敏感字、下拉菜单的综合操作方法
Oct 24 #Javascript
React Native 通告消息竖向轮播组件的封装
Aug 25 #Javascript
Vue v2.5 调整和更新不完全问题
Oct 24 #Javascript
Vue.js 2.5新特性介绍(推荐)
Oct 24 #Javascript
You might like
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
2014/06/12 PHP
PHP fclose函数用法总结
2019/02/15 PHP
PHP实现字母数字混合验证码功能
2019/07/11 PHP
js 数值项目的格式化函数代码
2010/05/14 Javascript
与jquery serializeArray()一起使用的函数,主要来方便提交表单
2011/01/31 Javascript
Javascript设置对象的ReadOnly属性(示例代码)
2013/12/25 Javascript
再探JavaScript作用域
2014/09/24 Javascript
PHP守护进程实例
2015/03/06 Javascript
jquery中object对象循环遍历的方法
2015/12/18 Javascript
JS判断是否为JSON对象及是否存在某字段的方法(推荐)
2016/11/29 Javascript
详解Node.js串行化流程控制
2017/05/04 Javascript
angular2/ionic2 实现搜索结果中的搜索关键字高亮的示例
2018/08/17 Javascript
vue项目中使用vue-i18n报错的解决方法
2019/01/13 Javascript
JS实现吸顶特效
2020/01/08 Javascript
原生js实现碰撞检测
2020/03/12 Javascript
Vue.js中使用Vuex实现组件数据共享案例
2020/07/31 Javascript
[42:32]VP vs RNG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
python通过pil模块将raw图片转换成png图片的方法
2015/03/16 Python
Python中音频处理库pydub的使用教程
2017/06/07 Python
关于Django外键赋值问题详解
2017/08/13 Python
python实现nao机器人手臂动作控制
2019/04/29 Python
Python安装tar.gz格式文件方法详解
2020/01/19 Python
解决pyCharm中 module 调用失败的问题
2020/02/12 Python
在Python中用GDAL实现矢量对栅格的切割实例
2020/03/11 Python
基于Python实现粒子滤波效果
2020/12/01 Python
英国卫浴商店:Ergonomic Design
2019/09/22 全球购物
学习党章思想汇报
2014/01/07 职场文书
小学生竞选班干部演讲稿
2014/04/24 职场文书
党的群众路线批评与自我批评发言稿
2014/10/16 职场文书
试用期辞职信范文
2015/03/02 职场文书
餐饮服务食品安全承诺书
2015/04/29 职场文书
开天辟地观后感
2015/06/09 职场文书
2015年小学重阳节活动总结
2015/07/29 职场文书
导游词之千岛湖
2019/09/23 职场文书
Python 正则模块详情
2021/11/02 Python
Python 如何利用ffmpeg 处理视频素材
2021/11/27 Python