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 相关文章推荐
使用jquery解析XML的方法
Sep 05 Javascript
基于javascript实现窗口抖动效果
Jan 03 Javascript
jQuery基于扩展实现的倒计时效果
May 14 Javascript
Bootstrap框架下下拉框select搜索功能
Mar 26 Javascript
Ajax分页插件Pagination从前台jQuery到后端java总结
Jul 22 Javascript
BootStrap实现响应式布局导航栏折叠隐藏效果(在小屏幕、手机屏幕浏览时自动折叠隐藏)
Nov 30 Javascript
微信小程序 es6-promise.js封装请求与处理异步进程
Jun 12 Javascript
JS+CSS实现网页加载中的动画效果
Oct 27 Javascript
zTree节点文字过多的处理方法
Nov 24 Javascript
使用json-server简单完成CRUD模拟后台数据的方法
Jul 12 Javascript
详解React项目中碰到的IE问题
Mar 14 Javascript
JavaScript的变量声明与声明提前用法实例分析
Nov 26 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
德劲1107的电路分析与打磨
2021/03/02 无线电
网站当前的在线人数
2006/10/09 PHP
php数据库密码的找回的步骤
2011/01/12 PHP
php中使用__autoload()自动加载未定义类的实现代码
2013/02/06 PHP
php 字符串中的\n换行符无效、不能换行的解决方法
2014/04/02 PHP
CI框架中zip类应用示例
2014/06/17 PHP
PHP实现四种基础排序算法的运行时间比较(推荐)
2016/08/11 PHP
PHP利用超级全局变量$_GET来接收表单数据的实例
2016/11/05 PHP
PHP脚本自动识别验证码查询汽车违章
2016/12/20 PHP
js资料prototype 属性
2007/03/13 Javascript
简单实用的js调试logger组件实现代码
2010/11/20 Javascript
JS仿flash上传头像效果实现代码
2011/07/18 Javascript
javascript学习笔记(十二) RegExp类型介绍
2012/06/20 Javascript
Javascript调用函数方法的几种方式介绍
2015/03/20 Javascript
js实现鼠标点击左上角滑动菜单效果代码
2015/09/06 Javascript
jquery实现触发时更新下拉列表内容的方法
2015/12/02 Javascript
使用jQuery判断浏览器滚动条位置的方法
2016/05/30 Javascript
jQuery插件学习教程之SlidesJs轮播+Validation验证
2016/07/12 Javascript
完美解决jQuery 鼠标快速滑过后,会执行多次滑出的问题
2016/12/08 Javascript
canvas实现爱心和彩虹雨效果
2017/03/09 Javascript
弱类型语言javascript中 a,b 的运算实例小结
2019/08/07 Javascript
[01:04:22]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 IG vs EG
2018/04/01 DOTA
Python 包含汉字的文件读写之每行末尾加上特定字符
2016/12/12 Python
Python读取MRI并显示为灰度图像实例代码
2018/01/03 Python
Python制作词云的方法
2018/01/03 Python
python机器学习之KNN分类算法
2018/08/29 Python
Python Django 页面上展示固定的页码数实现代码
2019/08/21 Python
Python3 Tkinkter + SQLite实现登录和注册界面
2019/11/19 Python
python序列类型种类详解
2020/02/26 Python
Office DEPOT法国官网:欧迪办公用品采购
2018/01/03 全球购物
台湾专柜女包:KINAZ
2019/12/26 全球购物
Marc O’Polo俄罗斯官方在线商店:德国高端时尚品牌
2019/12/26 全球购物
五型班组建设方案
2014/02/10 职场文书
公司营业员的自我评价
2014/03/04 职场文书
医学院毕业生自荐信范文
2014/03/06 职场文书
个人授权委托书格式
2014/08/30 职场文书