React Native AsyncStorage 封装

作者: Nickyzhang | 来源:发表于2017-05-07 10:08 被阅读896次

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

相关文章

网友评论

    本文标题:React Native AsyncStorage 封装

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