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自定义函数判断网站访问类型是PC还是移动终端
Jan 10 Javascript
开源的javascript项目Kissy介绍
Nov 28 Javascript
angularjs的一些优化小技巧
Dec 06 Javascript
深入探讨前端框架react
Dec 09 Javascript
轻松掌握JavaScript状态模式
Sep 07 Javascript
AngularJS中directive指令使用之事件绑定与指令交互用法示例
Nov 22 Javascript
Jquery Easyui对话框组件Dialog使用详解(14)
Dec 19 Javascript
VUE实现表单元素双向绑定(总结)
Aug 08 Javascript
React Native之TextInput组件解析示例
Aug 22 Javascript
js数组常用最重要的方法
Feb 04 Javascript
借助云开发实现小程序短信验证码的发送
Jan 06 Javascript
angular组件间传值测试的方法详解
May 07 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学习 字符串课件
2008/06/15 PHP
swfupload 多文件上传实现代码
2008/08/27 PHP
PHP中extract()函数的定义和用法
2012/08/17 PHP
smarty模板中使用get、post、request、cookies、session变量的方法
2014/04/24 PHP
PHP常用字符串函数用法实例总结
2020/06/04 PHP
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(下:动画篇)
2010/03/24 Javascript
javascript textarea光标定位方法(兼容IE和FF)
2011/03/12 Javascript
用js实现博客打赏功能
2016/10/24 Javascript
jQuery获取Table某列的值(推荐)
2017/03/03 Javascript
javascript中json对象json数组json字符串互转及取值方法
2017/04/19 Javascript
AngularJS实现tab选项卡的方法详解
2017/07/05 Javascript
vue组件的写法汇总
2018/04/12 Javascript
layui 给数据表格加序号的方法
2018/08/20 Javascript
Vue开发中遇到的跨域问题及解决方法
2020/02/11 Javascript
Vue实现购物车基本功能
2020/11/08 Javascript
web.py中调用文件夹内模板的方法
2014/08/26 Python
浅析Python的web.py框架中url的设定方法
2016/07/11 Python
Python3.6笔记之将程序运行结果输出到文件的方法
2018/04/22 Python
python3实现163邮箱SMTP发送邮件
2018/05/22 Python
对python中Matplotlib的坐标轴的坐标区间的设定实例讲解
2018/05/25 Python
Python单向链表和双向链表原理与用法实例详解
2018/08/31 Python
Python 忽略warning的输出方法
2018/10/18 Python
实例详解Matlab 与 Python 的区别
2019/04/26 Python
树莓派用python中的OpenCV输出USB摄像头画面
2019/06/22 Python
python对绑定事件的鼠标、按键的判断实例
2019/07/17 Python
Django的性能优化实现解析
2019/07/30 Python
Python远程开发环境部署与调试过程图解
2019/12/09 Python
python实现文件分片上传的接口自动化
2020/11/19 Python
CSS3 clip-path 用法介绍详解
2018/03/01 HTML / CSS
GAZMAN官网:澳大利亚领先的男装品牌
2019/12/19 全球购物
关联、聚合(Aggregation)以及组合(Composition)的区别
2012/02/29 面试题
岗位职责说明书
2014/05/07 职场文书
志愿者宣传口号
2014/06/17 职场文书
个人授权委托书范文
2014/09/21 职场文书
公司车辆管理制度
2015/08/04 职场文书
宪法宣传标语100条
2019/10/15 职场文书