React Native AsyncStorage 封装

在Android开发中有一个以key-value形式轻量级的数据存储方式---SharedPreferences, 类似的React Native中也有一个--AsyncStorage

AsyncStorage是一个简单的、异步的、持久化的Key-Value存储系统,它对于App来说是全局性的

API

static getItem(key: string, callback?: ?(error: ?Error, result: ?string) => void) 

读取key字段并将结果作为第二个参数传递给callback。如果有任何错误发生,则会传递一个Error对象作为第一个参数。返回一个Promise对象。

static setItem(key: string, value: string, callback?: ?(error: ?Error) => void) 

将key字段的值设置成value,并在完成后调用callback函数。如果有任何错误发生,则会传递一个Error对象作为第一个参数。返回一个Promise对象。

static removeItem(key: string, callback?: ?(error: ?Error) => void) 

删除一个字段。返回一个Promise对象。

封装

'use strict';
import {Component} from 'react';
import {
    AsyncStorage
} from 'react-native';
import JsonUtil from '../utils/JsonUtil'

class StorageUtil extends Component {
    /*
     * 保存
     * */
    static save(key, value, callback) {
        return AsyncStorage.setItem(key, JsonUtil.jsonToStr(value), callback);
    }
    /*
     * 获取
     * */
    static get(key) {
        return AsyncStorage.getItem(key).then((value) => {
            const jsonValue = JsonUtil.strToJson(value);
            return jsonValue;
        })
    }
    /*
     * 更新
     * */
    static update(key, value, callback) {
        StorageUtil.get(key).then((item) => {
            value = typeof value === 'string' ? value : Object.assign({}, item, value);
            return AsyncStorage.setItem(key, JsonUtil.jsonToStr(value), callback);
        })
    }
    /*
     * 删除
     * */
    static delete(key, callback) {
        AsyncStorage.removeItem(key, callback);
    }
}

export default StorageUtil;

其中JsonUtil是封装的一个Json格式转换的工具类,其中保存和删除添加了一个回调函数

调用

保存
StorageUtil.save('sessionToken', res.sessionToken, function () {
   console.log('成功');
});
调用
StorageUtil.get('sessionToken').then((username) => {
    this.setState({
        username:username
    })
});
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,001评论 19 139
  • https://nodejs.org/api/documentation.html 工具模块 Assert 测试 ...
    KeKeMars阅读 6,416评论 0 6
  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 13,956评论 0 15
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,779评论 18 399
  • 拖了这么久 终于被拉黑了 这一次如此平静 看不到你秀的恩爱 看不到你的烦恼 也许我会忘记 你的一切好坏 突然的拉黑...
    守鱼人阅读 116评论 0 0