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 相关文章推荐
js下弹出窗口的变通
Apr 18 Javascript
数组Array进行原型prototype扩展后带来的for in遍历问题
Feb 07 Javascript
document.execCommand()的用法小结
Jan 08 Javascript
Js表格万条数据瞬间加载实现代码
Feb 20 Javascript
基于jquery实现左右按钮点击的图片切换效果
Jan 27 Javascript
在JavaScript中call()与apply()区别
Jan 22 Javascript
js Canvas绘制圆形时钟教程
Feb 06 Javascript
使用vue构建一个上传图片表单
Jul 04 Javascript
解决使用bootstrap的dropdown部件时报错:error:Bootstrap dropdown require Popper.js问题
Aug 30 Javascript
JS监听滚动和id自动定位滚动
Dec 18 Javascript
vue实现移动端H5数字键盘组件使用详解
Aug 25 Javascript
关于javascript中的promise的用法和注意事项(推荐)
Jan 15 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
动易数据转成dedecms的php程序
2007/04/07 PHP
php中如何同时使用session和cookie来保存用户登录信息
2013/07/05 PHP
php bootstrap实现简单登录
2016/03/08 PHP
$.ajax json数据传递方法
2008/11/19 Javascript
早该知道的7个JavaScript技巧
2013/03/27 Javascript
jQuery调用ajax请求的常见方法汇总
2015/03/24 Javascript
js实现的后台左侧管理菜单代码
2015/09/11 Javascript
javascript实现倒计时跳转页面
2016/01/17 Javascript
基于canvas实现的绚丽圆圈效果完整实例
2016/01/26 Javascript
JavaScript下的时间格式处理函数Date.prototype.format
2016/01/27 Javascript
Bootstrap中CSS的使用方法
2016/02/17 Javascript
使用JS在浏览器中判断当前网络连接状态的几种方法
2017/05/05 Javascript
在Vue组件上动态添加和删除属性方法
2018/02/23 Javascript
改变vue请求过来的数据中的某一项值的方法(详解)
2018/03/08 Javascript
详解ajax的data参数错误导致页面崩溃
2018/04/30 Javascript
Vue+Koa2+mongoose写一个像素绘板的实现方法
2019/09/10 Javascript
SpringBoot在yml配置文件中配置druid的操作
2020/11/16 Javascript
[02:00]DAC2018主宣传片——龙征四海,剑问东方
2018/03/20 DOTA
python调用windows api锁定计算机示例
2014/04/17 Python
Python获取运行目录与当前脚本目录的方法
2015/06/01 Python
Python的SimpleHTTPServer模块用处及使用方法简介
2018/01/22 Python
Centos下实现安装Python3.6和Python2共存
2018/08/15 Python
python+pyqt5实现24点小游戏
2019/01/24 Python
python实现控制电脑鼠标和键盘,登录QQ的方法示例
2019/07/06 Python
python如何用matplotlib创建三维图表
2021/01/26 Python
虚拟环境及venv和virtualenv的区别说明
2021/02/05 Python
韩国三大免税店之一:THE GRAND 中文免税店
2016/07/21 全球购物
兰蔻英国官网:Lancome英国
2019/04/30 全球购物
年度考核评语
2014/01/19 职场文书
教师业务学习制度
2014/01/25 职场文书
学生手册家长评语
2014/02/10 职场文书
金融事务专业毕业生求职信
2014/02/23 职场文书
计算机应用专业自荐信
2014/07/05 职场文书
投诉信范文
2015/07/02 职场文书
德能勤绩工作总结
2015/08/11 职场文书
python自动化之如何利用allure生成测试报告
2021/05/02 Python