美文网首页RN
React-Native AsyncStorage异步变同步

React-Native AsyncStorage异步变同步

作者: 董董董董董董董董董大笨蛋 | 来源:发表于2017-08-04 09:35 被阅读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 await才能同步获取
    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);
        }
    

    相关文章

      网友评论

        本文标题:React-Native AsyncStorage异步变同步

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