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 获取滚动条位置等信息的函数
Sep 08 Javascript
ASP.NET jQuery 实例8 (动态添加内容到DropDownList)
Feb 03 Javascript
php对mongodb的扩展(小试牛刀)
Nov 11 Javascript
jQuery实现公告文字左右滚动的实例代码
Oct 29 Javascript
JavaScript实现简易的天数计算器实例【附demo源码下载】
Jan 18 Javascript
原生js实现简单的链式操作
Jul 04 Javascript
bootstrap table实现点击翻页功能 可记录上下页选中的行
Sep 28 Javascript
jQuery图片查看插件Magnify开发详解
Dec 25 jQuery
Bootstrap table中toolbar新增条件查询及refresh参数使用方法
May 18 Javascript
JavaScript new对象的四个过程实例浅析
Jul 31 Javascript
Vue+Koa2+mongoose写一个像素绘板的实现方法
Sep 10 Javascript
Node使用Nodemailer发送邮件的方法实现
Feb 24 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
mysql5详细安装教程
2007/01/15 PHP
PHP之数组学习
2011/05/29 PHP
php实现可运算的验证码
2015/11/10 PHP
node.js chat程序如何实现Ajax long-polling长链接刷新模式
2012/03/13 Javascript
javascript 基础篇4 window对象,DOM
2012/03/14 Javascript
一样的table?不一样的table(可编辑状态table)
2012/09/19 Javascript
js图片向右一张张滚动效果实例代码
2013/11/23 Javascript
在父页面得到zTree已选中的节点的方法
2015/02/12 Javascript
JSONP之我见
2015/03/24 Javascript
jQuery对JSON数据进行排序输出的方法
2015/06/24 Javascript
深入剖析JavaScript中的函数currying柯里化
2016/04/29 Javascript
javascript日期比较方法实例分析
2016/06/17 Javascript
jQuery文字提示与图片提示效果实现方法
2016/07/04 Javascript
jQuery实现的回车触发按钮事件功能示例
2018/03/25 jQuery
[05:31]DOTA2英雄梦之声_第08期_莉娜
2014/06/23 DOTA
[46:20]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS BO3 第二场 1月22日
2021/03/11 DOTA
python使用socket向客户端发送数据的方法
2015/04/29 Python
Python下载指定页面上图片的方法
2016/05/12 Python
Python遍历目录中的所有文件的方法
2016/07/08 Python
pyqt5简介及安装方法介绍
2018/01/31 Python
Django 使用logging打印日志的实例
2018/04/28 Python
Python模拟登录的多种方法(四种)
2018/06/01 Python
Python hashlib模块用法实例分析
2018/06/12 Python
在Python中给Nan值更改为0的方法
2018/10/30 Python
Keras 中Leaky ReLU等高级激活函数的用法
2020/07/05 Python
Python定义一个Actor任务
2020/07/29 Python
Lombok插件安装(IDEA)及配置jar包使用详解
2020/11/04 Python
python 爬取小说并下载的示例
2020/12/07 Python
CSS3 transition 实现通知消息轮播条
2020/10/14 HTML / CSS
易程科技软件测试笔试
2013/03/24 面试题
本科毕业生求职自荐信
2014/02/03 职场文书
求职自荐信怎么写
2014/03/06 职场文书
《故乡》教学反思
2014/04/10 职场文书
加强作风建设心得体会
2014/10/22 职场文书
2015年社区关工委工作总结
2015/04/03 职场文书
公司行政助理岗位职责
2015/04/11 职场文书