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 语法基础 想学习js的朋友可以看看
Dec 16 Javascript
JavaScript 布尔操作符解析  && || !
Aug 10 Javascript
Javascript学习笔记之数组的构造函数
Nov 23 Javascript
浅谈JavaScript异常处理语句
Jun 26 Javascript
JavaScript原型及原型链终极详解
Jan 04 Javascript
详解JavaScript中数组的reduce方法
Dec 02 Javascript
学习vue.js计算属性
Dec 03 Javascript
vuejs2.0实现一个简单的分页示例
Feb 22 Javascript
javascript 日期相减-在线教程(附代码)
Aug 17 Javascript
Node.js中,在cmd界面,进入退出Node.js运行环境的方法
May 12 Javascript
微信小程序实现原生步骤条
Jul 25 Javascript
Vue实现移动端拖拽交换位置
Jul 29 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
一个程序下载的管理程序(一)
2006/10/09 PHP
PHP新手上路(十)
2006/10/09 PHP
常用的PHP数据库操作方法(MYSQL版)
2011/06/08 PHP
根据ip调用新浪api获取城市名并转成拼音
2014/03/07 PHP
php中file_exists函数使用详解
2015/05/08 PHP
php实现购物车功能(以大苹果购物网为例)
2017/03/09 PHP
Thinkphp5框架中引入Markdown编辑器操作示例
2020/06/03 PHP
jquery实现一个简单的表单验证实例
2016/03/30 Javascript
JS实现兼容各种浏览器的高级拖动方法完整实例【测试可用】
2016/06/21 Javascript
KnockoutJS 3.X API 第四章之click绑定
2016/10/10 Javascript
关于 jQuery Easyui异步加载tree的问题解析
2016/12/06 Javascript
从零开始学习Node.js系列教程一:http get和post用法分析
2017/04/13 Javascript
jQuery EasyUI tree增加搜索功能的实现方法
2017/04/27 jQuery
微信小程序实现缓存根据不同的id来进行设置和读取缓存
2017/06/12 Javascript
jQuery实现键盘回车搜索功能
2017/07/25 jQuery
微信小程序 五星评分的实现实例
2017/08/04 Javascript
AjaxUpLoad.js实现文件上传功能
2018/03/02 Javascript
vue路由懒加载的实现方法
2018/03/12 Javascript
Vue Router去掉url中默认的锚点#
2018/08/01 Javascript
python小技巧之批量抓取美女图片
2014/06/06 Python
在类Unix系统上开始Python3编程入门
2015/08/20 Python
Python计算两个日期相差天数的方法示例
2017/05/23 Python
python实现稀疏矩阵示例代码
2017/06/09 Python
Python爬虫实战之12306抢票开源
2019/01/24 Python
pymongo中聚合查询的使用方法
2019/03/22 Python
创建Django项目图文实例详解
2019/06/06 Python
python IDLE添加行号显示教程
2020/04/25 Python
什么是python类属性
2020/06/10 Python
python让函数不返回结果的方法
2020/06/22 Python
新闻专业大学生找工作的自我评价
2013/10/30 职场文书
教师节寄语2015
2015/03/23 职场文书
2015年项目经理工作总结
2015/04/30 职场文书
一文帮你理解PReact10.5.13源码
2021/04/03 Javascript
css3带你实现3D转换效果
2022/02/24 HTML / CSS
Spring Bean是如何初始化的详解
2022/03/22 Java/Android
TypeScript 使用 Tuple Union 声明函数重载
2022/04/07 Javascript