React-Native AsyncStorage文档

1.概述

1.AsyncStorage 是一个简单的、异步的、持久化的 Key-Value 存储系统,它对于 App 来说是全局性的。它用来代替 LocalStorage。
2.由于它的操作是全局的,官方建议我们最好针对 AsyncStorage 进行一下抽象的封装再使用,而且不是直接拿 AsyncStorage 进行使用。
3.AsyncStorage 存储的位置根据系统的不同而有所差异。iOS 中的存储类似于 NSUserDefault,通过 plist 文件存放在设备中。Android 中会存储在 RocksDB 或者 SQLite 中,取决于你使用哪个。

2.相关方法

(1)根据键来获取值,获取的结果会放在回调函数中。

static getItem(key: string, callback:(error, result))

(2)根据键来设置值。

static setItem(key: string, value: string, callback:(error))

(3)根据键来移除项。

static removeItem(key: string, callback:(error))

(4)合并现有值和输入值。

static
mergeItem(key: string, value: string, callback:(error))

(5)清除所有的项目

static  clear(callback:(error))

(6)获取所有的键

static  getAllKeys(callback:(error, keys))

(7)清除所有进行中的查询操作。

static  flushGetRequests()

(8)获取多项,其中 keys 是字符串数组,比如:['k1', 'k2']1

static  multiGet(keys, callback:(errors, result))

(9)设置多项,其中 keyValuePairs 是字符串的二维数组,比如:[['k1', 'val1'], ['k2', 'val2']]

static multiSet(keyValuePairs, callback:(errors))

(10)删除多项,其中 keys 是字符串数组,比如:['k1', 'k2']1

static  multiRemove(keys, callback:(errors))

(11)多个键值合并,其中 keyValuePairs 是字符串的二维数组,比如:[['k1', 'val1'], ['k2', 'val2']]1

static  multiMerge(keyValuePairs, callback:(errors))

3.一个简单的封装类

import React, {
    AsyncStorage
}from 'react-native';

class AS{
    /**
     * 获取
     * @param key
     * @returns {Promise<T>|*|Promise.<TResult>}
     */

    static get(key) {
        return AsyncStorage.getItem(key).then((value) => {
            const jsonValue = JSON.parse(value);
            return jsonValue;
        });
    }


    /**
     * 保存
     * @param key
     * @param value
     * @returns {*}
     */
    static save(key, value) {
        return AsyncStorage.setItem(key, JSON.stringify(value));
    }


    /**
     * 更新
     * @param key
     * @param value
     * @returns {Promise<T>|Promise.<TResult>}
     */
    static update(key, value) {
        return DeviceStorage.get(key).then((item) => {
            value = typeof value === 'string' ? value : Object.assign({}, item, value);
            return AsyncStorage.setItem(key, JSON.stringify(value));
        });
    }


    /**
     * 更新
     * @param key
     * @returns {*}
     */
    static delete(key) {
        return AsyncStorage.removeItem(key);
    }
}

export default AS;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 53.计算字符 在字符串中获取字符值的数量, 可以使用字符串字符属性中的计数属性: let unusualMena...
    无沣阅读 1,150评论 0 4
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,272评论 0 4
  • 今天把车开去做保养,回来的时候打滴滴回来的,一路上跟司机师傅闲聊,说到现在的社会节奏变得太快了,想想我们社会...
    如水2016阅读 193评论 0 0
  • 最近给十年后的自己一封信的活动开展得如火如荼,很多朋友的慢递邮件看了真的是很让人激动啊。但,同时,喜欢开脑动的我又...
    LostAbaddon阅读 745评论 2 7
  • 夜,静的如同死去,在这死去的世界里,我是怎样的,是挣扎着妄想打碎这一切?是蜷缩在更深处流泪。
    孜然味的玉米阅读 260评论 0 1