美文网首页android 进阶混合式开发
ReactNative二级缓存(AsyncStorage)

ReactNative二级缓存(AsyncStorage)

作者: Simplelove_f033 | 来源:发表于2019-03-03 20:34 被阅读2次

    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);
    }
    

    }

    相关文章

      网友评论

        本文标题:ReactNative二级缓存(AsyncStorage)

        本文链接:https://www.haomeiwen.com/subject/xpsmuqtx.html