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操作XML实例代码(获取新闻标题并分页,并分页)
May 25 Javascript
基于jquery的跟随屏幕滚动代码
Jul 24 Javascript
JS判断不能为空实例代码
Nov 26 Javascript
jQuery判断div随滚动条滚动到一定位置后停止
Apr 02 Javascript
使用JS获取当前地理位置方法汇总
Dec 18 Javascript
Bootstrap每天必学之基础排版
Nov 20 Javascript
JavaScript生成验证码并实现验证功能
Sep 24 Javascript
Sequelize中用group by进行分组聚合查询
Dec 12 Javascript
Angular 4.x中表单Reactive Forms详解
Apr 25 Javascript
浅谈JS对html标签的属性的干预以及对CSS样式表属性的干预
Jun 25 Javascript
详解Javascript中new()到底做了些什么?
Mar 29 Javascript
React中使用async validator进行表单验证的实例代码
Aug 17 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
咖啡界又出新概念,无需咖啡豆的分子咖啡
2021/03/03 咖啡文化
php获取淘宝分类id示例
2014/01/16 PHP
php session的应用详细介绍
2017/03/22 PHP
ThinkPHP中图片按比例切割的代码实例
2019/03/08 PHP
Laravel Eloquent ORM 多条件查询的例子
2019/10/10 PHP
laravel框架上传图片实现实时预览功能
2019/10/14 PHP
自己动手手写jQuery插件总结
2015/01/20 Javascript
node.js中的forEach()是同步还是异步呢
2015/01/29 Javascript
jQuery遮罩层实现方法实例详解(附遮罩层插件)
2015/12/08 Javascript
JavaScript 是什么意思
2016/09/22 Javascript
Node.js包管理器Yarn的入门介绍与安装
2016/10/17 Javascript
javascript实现下雨效果
2017/03/27 Javascript
使用ionic播放轮询广告的实现方法(必看)
2017/04/24 Javascript
jquery版轮播图效果和extend扩展
2017/07/18 jQuery
基于webpack 实用配置方法总结
2017/09/28 Javascript
Vue的H5页面唤起支付宝支付功能
2019/04/18 Javascript
微信小程序中button去除默认的边框实例代码
2019/08/01 Javascript
layui清空,重置表单数据的实例
2019/09/12 Javascript
js中apply和call的理解与使用方法
2019/11/27 Javascript
Python采用Django制作简易的知乎日报API
2016/08/03 Python
Python 错误和异常代码详解
2018/01/29 Python
Python利用Django如何写restful api接口详解
2018/06/08 Python
Flask框架WTForm表单用法示例
2018/07/20 Python
利用Python将每日一句定时推送至微信的实现方法
2018/08/13 Python
python字符串分割及字符串的一些常规方法
2019/07/24 Python
python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配
2020/02/29 Python
python GUI库图形界面开发之PyQt5布局控件QHBoxLayout详细使用方法与实例
2020/03/06 Python
h5移动端调用支付宝、微信支付的实现
2020/06/08 HTML / CSS
携程旅行网:中国领先的在线旅行服务公司
2017/02/17 全球购物
Android面试宝典
2013/08/06 面试题
学校大课间活动方案
2014/01/30 职场文书
大专生毕业的自我评价
2014/02/06 职场文书
公司成本主管岗位责任制
2014/02/21 职场文书
六年级作文之自救
2019/12/19 职场文书
解决Django transaction进行事务管理踩过的坑
2021/04/24 Python
MySQL库表名大小写的选择
2021/06/05 MySQL