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 相关文章推荐
图片延迟加载的实现代码(模仿懒惰)
Mar 29 Javascript
jQuery中parents()和parent()的区别分析
Oct 28 Javascript
Perl Substr()函数及函数的应用
Dec 16 Javascript
理解javascript中的with关键字
Feb 15 Javascript
全面解析vue router 基本使用(动态路由,嵌套路由)
Sep 02 Javascript
vue2.0 路由模式mode="history"的作用
Oct 18 Javascript
小程序转发探索示例
Feb 19 Javascript
详解js 创建对象的几种方法
Mar 08 Javascript
express启用https使用小记
May 21 Javascript
elementUi vue el-radio 监听选中变化的实例代码
Jun 28 Javascript
解决antd Form 表单校验方法无响应的问题
Oct 27 Javascript
json.stringify()与json.parse()的区别以及用处
Jan 25 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
优化使用mysql存储session的php代码
2008/01/10 PHP
php执行sql语句的写法
2009/03/10 PHP
PHP使用PHPMailer发送邮件的简单使用方法
2013/11/12 PHP
php解压文件代码实现php在线解压
2014/02/13 PHP
php实现转换html格式为文本格式的方法
2016/05/16 PHP
php解析base64数据生成图片的方法
2016/12/06 PHP
PHP实现的用户注册表单验证功能简单示例
2019/02/25 PHP
javascript 去字符串空格终极版(支持utf8)
2009/11/14 Javascript
限制文本框输入N个字符的js代码
2010/05/13 Javascript
网页下载文件期间如何防止用户对网页进行其他操作
2014/06/27 Javascript
javascript面向对象程序设计(一)
2015/01/29 Javascript
简介JavaScript中setUTCSeconds()方法的使用
2015/06/12 Javascript
JS控制表单提交的方法
2015/07/09 Javascript
使用Chart.js图表库制作漂亮的响应式表单
2015/10/28 Javascript
Highcharts学习之数据列
2016/08/03 Javascript
Angular外部使用js调用Angular控制器中的函数方法或变量用法示例
2016/08/05 Javascript
基于JavaScript实现的快速排序算法分析
2017/04/14 Javascript
react-native中ListView组件点击跳转的方法示例
2017/09/30 Javascript
jQuery实现网页拼图游戏
2020/04/22 jQuery
Vue实现table上下移动功能示例
2019/02/21 Javascript
node爬取新型冠状病毒的疫情实时动态
2020/02/06 Javascript
学习python类方法与对象方法
2016/03/15 Python
基于python解线性矩阵方程(numpy中的matrix类)
2019/10/21 Python
Python迷宫生成和迷宫破解算法实例
2019/12/24 Python
计算Python Numpy向量之间的欧氏距离实例
2020/05/22 Python
总经理岗位职责
2013/11/09 职场文书
农村婚礼证婚词
2014/01/10 职场文书
食品安全检查制度
2014/02/03 职场文书
应聘医药销售自荐书范文
2014/02/08 职场文书
《充气雨衣》教学反思
2014/04/07 职场文书
我们的节日春节活动方案
2014/08/22 职场文书
英语教师个人总结
2015/02/09 职场文书
大四学生个人总结
2015/02/15 职场文书
六年级作文之家庭作文
2019/12/12 职场文书
关于PostgreSQL JSONB的匹配和交集问题
2021/09/14 PostgreSQL
讲解Python实例练习逆序输出字符串
2022/05/06 Python