RN

React-Native AsyncStorage异步变同步

2017-08-04  本文已影响4145人  董董董董董董董董董大笨蛋
AsyncStorage使用
/**
 * AsyncStorage是一个简单的、异步的、持久化的Key-Value存储系统,
 */

'use strict';

import React from 'react';
import ReactNative, {AsyncStorage} from 'react-native';
class StorageUtil {
    /**
     * 根据key获取json数值
     * @param key
     * @returns {Promise<TResult>}
     */
    static get(key) {
        return AsyncStorage.getItem(key).then((value) => {
            if (value && value != '') {
                const jsonValue = JSON.parse(value);
                return jsonValue;
            } else {
                return null
            }
        }).catch(() => {
            return null
        });
    }

    /**
     * 保存key对应的json数值
     * @param key
     * @param value
     * @returns {Promise<string>}
     */
    static save(key, value) {
        return AsyncStorage.setItem(key, JSON.stringify(value));
    }

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

    /**
     * 删除key对应json数值
     * @param key
     * @returns {Promise<string>}
     */
    static delete(key) {
        return AsyncStorage.removeItem(key);
    }

    /**
     * 删除所有配置数据
     * @returns {Promise<string>}
     */
    static clear() {
        return AsyncStorage.clear();
    }
}

export default StorageUtil;


    /***** Storage  *************************************************** */

    /**
     * 获取key对应的Storage数据
     * @param key stirng类型
     * @returns {*}
     */
    get(key) {
        return StorageUtil.get(key);
    }

    /**
     * 保存key对应的Storage数据
     * @param key
     * @param value
     * @returns {*}
     */
    save(key, value) {
        return StorageUtil.save(key, value);
    }

    /**
     * 删除key对应的Storage数据
     * @param key
     * @returns {*}
     */
    delete(key) {
        return StorageUtil.delete(key);
    }

    /**
     * 清除所有的Storage数据
     * @returns {*}
     */
    clear() {
        return StorageUtil.clear();
    }

存储获取

async getStorage() {
        let logic = await super.get(logic);
        if (!logic) {
            // 如果是首次登录, 跳转到引导界面
            name = 'Guide';
            component = Guide
        } else {
            if (!logic.isGuide) {
                // 如果没有引导
                name = 'Guide';
                component = Guide;
            } else if (!logic.isLogin) {
                // 如果没有登录
                name = 'Login';
                component = Login;
            } else {
                name = 'Main';
                component = Main;
            }
        }
        this.setState({
            name: name,
            component: component,
            params: params,
            modalVisible: false
        });
        this.timer && clearTimeout(this.timer);
    }
上一篇下一篇

猜你喜欢

热点阅读