您的位置:首页 > Web前端 > React

React Native之AsyncStorage

2017-06-05 10:55 429 查看
React Native 学习资源精选仓库

AsyncStorage官网

React Native 每日一学(Learn a little every day)

React Native - 持久化存储(AsyncStorage)的使用详解

AsyncStorage是一个简单的、异步的、持久化的Key-Value存储系统,它对于App来说是全局性的。它用来代替LocalStorage。

我们在AsyncStorage的基础上做一层抽象封装,而不是直接使用AsyncStorage。

AsyncStorage是不支持sql的,AsyncStorage是Key-Value存储系统。

方法

'use strict';

import {AsyncStorage} from 'react-native';

class EKVData{
//setItem:保存数据。
//将key字段的值设置成value,并在完成后调用callback函数。如果有任何错误发生,则会传递一个Error对象作为第一个参数。返回一个Promise对象。
static setData(key, value) {
return new Promise((resolve, reject) => {
AsyncStorage.setItem(key, JSON.stringify(value), (error)=>{
if(!error)
resolve('操作成功');
else
reject('操作失败');
});
});
}
//getItem:查询key。
//读取key字段并将结果作为第二个参数传递给callback。如果有任何错误发生,则会传递一个Error对象作为第一个参数。返回一个Promise对象。
static getData(key) {
return new Promise((resolve, reject) => {
AsyncStorage.getItem(key, (error, result) => {
if(!error){
if(result){
resolve(result);
}else{
reject(null);
}
}else{
reject(null);
}
});
});
}

//removeItem:删除一个字段。返回一个Promise对象。
static removeData(key) {
return new Promise((resolve, reject)=>{
AsyncStorage.removeItem(key, (error)=>{
if(!error)
resolve('操作成功');
else
reject('操作失败');
});
});
}

}
module.exports = EKVData;


static multiGet()

获取keys所包含的所有字段的值,调用callback回调函数时返回一个key-value数组形式的数组。返回一个Promise对象。

multiGet([‘k1’, ‘k2’], cb) -> cb([[‘k1’, ‘val1’], [‘k2’, ‘val2’]])

AsyncStorage.multiGet(keys, (err, stores) => {
try {
//map方法三个参数:当前正在遍历的元素, 元素索引, 原数组本身.
stores.map((result, i, store) => {
// get at each store's key/value so you can work with it
let key = store[i][0];
let value = store[i][1];
if (value)items.push(JSON.parse(value));
});
resolve(items);
} catch (e) {
reject(e);
}
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息