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 SocialHistory 检查访问者是否访问过某站点
Aug 02 Javascript
Javascript Throttle & Debounce应用介绍
Mar 19 Javascript
JSON.parse()和JSON.stringify()使用介绍
Jun 20 Javascript
jQuery的观察者模式详解
Dec 22 Javascript
对于jQuery性能的一些优化建议
Aug 13 Javascript
第九章之路径分页标签与徽章组件
Apr 25 Javascript
轻松掌握JavaScript享元模式
Aug 27 Javascript
微信公众号H5支付接口调用方法
Jan 10 Javascript
vue进入页面时滚动条始终在底部代码实例
Mar 26 Javascript
记录一次开发微信网页分享的步骤
May 07 Javascript
Vue+Node实现的商城用户管理功能示例
Dec 23 Javascript
手把手教你从零开始react+antd搭建项目
Jun 03 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
smarty的保留变量问题
2008/10/23 PHP
让PHP更快的提供文件下载的代码
2012/06/13 PHP
php验证session无效的解决方法
2014/11/04 PHP
php实现用已经过去多长时间的方式显示时间
2015/06/05 PHP
php实现倒计时效果
2015/12/19 PHP
thinkPHP中分页用法实例分析
2015/12/26 PHP
最新版本PHP 7 vs HHVM 多角度比较
2016/02/14 PHP
CentOS下搭建PHP环境与WordPress博客程序的全流程总结
2016/05/07 PHP
win7 wamp 64位 php环境开启curl服务遇到的问题及解决方法
2018/09/16 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
2020/02/23 PHP
JavaScript confirm选择判断
2008/10/18 Javascript
javascript css在IE和Firefox中区别分析
2009/02/18 Javascript
理解Javascript_07_理解instanceof实现原理
2010/10/15 Javascript
JQuery动态创建DOM、表单元素的实现代码
2011/08/09 Javascript
JS中Iframe之间传值的方法
2013/03/11 Javascript
jquery入门必备的基本认识及实例(整理)
2013/06/24 Javascript
动态的绑定事件addEventListener方法的使用
2014/01/24 Javascript
js判断出两个字符串最大子串的函数实现方法
2016/11/01 Javascript
AngularJS中$http使用的简单介绍
2017/03/17 Javascript
详谈innerHTML innerText的使用和区别
2017/08/18 Javascript
详解redux异步操作实践
2018/08/15 Javascript
vue+elementUi图片上传组件使用详解
2019/08/20 Javascript
Python中*args和**kwargs的区别详解
2019/09/17 Python
Python多进程编程multiprocessing代码实例
2020/03/12 Python
html5 Canvas画图教程(4)—未闭合的路径及渐变色的填充方法
2013/01/09 HTML / CSS
英国高街品牌:Miss Selfridge(塞尔弗里奇小姐)
2016/09/21 全球购物
Space NK美国站:英国高端美妆护肤商城
2017/05/22 全球购物
台湾最大银发乐活百货:乐龄网
2018/05/21 全球购物
迟到检讨书5000字
2014/01/31 职场文书
中专毕业生的自荐书
2014/07/01 职场文书
高考诚信考试承诺书
2015/04/29 职场文书
亮剑观后感
2015/06/05 职场文书
观后感开头
2015/06/19 职场文书
读《人生的智慧》有感:闲暇是人生的精华
2019/12/25 职场文书
详解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
2021/04/25 Python
Redis可视化客户端小结
2021/06/10 Redis