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 相关文章推荐
Jquery工作常用实例 使用AJAX使网页进行异步更新
Jul 26 Javascript
js前台分页显示后端JAVA数据响应
Mar 18 Javascript
alert出数组中的随即值代码
Sep 25 Javascript
AngularJS表格添加序号的方法
Mar 03 Javascript
微信小程序 动态传参实例详解
Apr 27 Javascript
实例详解JSON取值(key是中文或者数字)方式
Aug 24 Javascript
javaScript实现滚动条事件详解
Mar 24 Javascript
js实时监控文本框输入字数的实例代码
Jan 18 Javascript
使用electron制作满屏心特效的示例代码
Nov 27 Javascript
layui 解决富文本框form表单提交为空的问题
Oct 26 Javascript
JS图片预加载三种实现方法解析
May 08 Javascript
JavaScript 正则应用详解【模式、欲查、反向引用等】
May 13 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
《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
PHP的FTP学习(二)
2006/10/09 PHP
理解php原理的opcodes(操作码)
2010/10/26 PHP
支持中文的php加密解密类代码
2011/11/27 PHP
php查询相似度最高的字符串的方法
2015/03/12 PHP
php删除一个路径下的所有文件夹和文件的方法
2018/02/07 PHP
PHP cURL获取微信公众号access_token的实例
2018/04/28 PHP
jquery异步循环获取功能实现代码
2010/09/19 Javascript
表格奇偶行设置不同颜色的核心JS代码
2013/12/24 Javascript
JavaScript 面向对象与原型
2015/04/10 Javascript
jquery中关于bind()方法的使用技巧分享
2017/03/30 jQuery
使用JQ完成表格隔行换色的简单实例
2017/08/25 Javascript
JS库particles.js创建超炫背景粒子插件(附源码下载)
2017/09/13 Javascript
layer实现关闭弹出层刷新父界面功能详解
2017/11/15 Javascript
详解使用vue-cli脚手架初始化Vue项目下的项目结构
2018/03/08 Javascript
基于vue-ssr的静态网站生成器VuePress 初体验
2018/04/17 Javascript
详解javascript中的变量提升和函数提升
2018/05/24 Javascript
JS Math对象与Math方法实例小结
2019/07/05 Javascript
优雅的使用javascript递归画一棵结构树示例代码
2019/09/22 Javascript
使用node.JS中的url模块解析URL信息
2020/02/06 Javascript
vue tab切换,解决echartst图表宽度只有100px的问题
2020/07/19 Javascript
vue实现把接口单独存放在一个文件方式
2020/08/13 Javascript
[22:20]初生之犊-TI4第5名LGD战队纪录片
2014/08/13 DOTA
python正则分析nginx的访问日志
2017/01/17 Python
python实现用户答题功能
2018/01/17 Python
Python实现PS滤镜功能之波浪特效示例
2018/01/26 Python
使用Python更换外网IP的方法
2018/07/09 Python
python实现简单的单变量线性回归方法
2018/11/08 Python
PyQt打开保存对话框的方法和使用详解
2019/02/27 Python
Python 之 Json序列化嵌套类方式
2020/02/27 Python
法律专业个人实习自我鉴定
2013/09/23 职场文书
珠宝店促销方案
2014/03/21 职场文书
学习雷锋活动总结
2014/04/29 职场文书
2014教师党员自我评议总结
2014/09/19 职场文书
公司仓管员岗位职责
2015/04/01 职场文书
伊索寓言读书笔记
2015/06/30 职场文书