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