ReactNative: 使用AsyncStorage异步存储类
一、简介
AsyncStorage是一个简单的具有异步特性可持久化的键值对key-value的存储系统。它对整个APP而言,是一个全局的存储空间,可以用来替代H5中提供的window属性LocalStorage。AsyncStorage跟iOS中的偏好设置NSUserDefault很类似,也是通过plist列表实现存储。AsyncStorage和LocalStorage的用法基本相同。这里对LocalStorage的介绍简单地一笔带过,基本使用如下:
//获取localStorage
var storage = window.localStorage; //使用 localStorage.setItem() 向其添加数据项
storage('name', 'XYQ'); //读取 localStorage 项目
var name = storage.getItem("name"); //删除 localStorage 项目
storage.removeItem("name");
二、API
AsyncStorage提供的函数或方法比较齐全,每一个方法都有一个回调函数。函数的第一个参数都是错误对象,如果发生错误,里面会包裹着错误信息,否则返回空值null。所有的方法执行后,都会返回一个Promise对象,这个对象是ES6中的新特性函数,即ES6 Promise异步构造函数。具体的方法如下所示:
//根据键名获取键值,获得结果会在回调函数中
getItem: function(
key: string,
callback?: ?(error: ?Error, result: ?string) => void
):Promise{} //设置键值对
setItem: function(
key: string,
value: string,
callback?: ?(error: ?Error) => void
):Promise{} //移除键值对
removeItem: function(
key: string,
callback?: ?(error: ?Error) => void
): Promise{} //合并键值对
mergeItem: function(
key: string,
value: string,
callback?: ?(error: ?Error) => void
): Promise{} //清除所有键值对
clear: function(callback?: ?(error: ?Error) => void
): Promise{} //获取所有键名
getAllKeys: function(callback?: ?(error: ?Error, keys: ?Array<string>) => void
): Promise{} //获取多项键值对,其中keys是字符串数组
multiGet: function(
keys: Array<string>,
callback?: ?(errors: ?Array<Error>, result: ?Array<Array<string>>) => void
): Promise{} //设置多项键值对,其中keyValuesParis是字符串二维数组
multiSet: function(
keyValuePairs: Array<Array<string>>,
callback?: ?(errors: ?Array<Error>) => void
): Promise{} //移除多项键值对,其中keys是字符串数组
multiRemove: function(
keys: Array<string>,
callback?: ?(errors: ?Array<Error>) => void
): Promise{} //合并多项键值对,其中keyValuesParis是字符串二维数组
multiMerge: function(
keyValuePairs: Array<Array<string>>,
callback?: ?(errors: ?Array<Error>) => void
): Promise{}
三、使用
实现文件:
/**
* Sample React Native App
* https://github.com/facebook/react-native
* @flow
*/ import React, { Component } from 'react'; import {
AppRegistry,
StyleSheet,
View,
AsyncStorage
} from 'react-native'; export default class ReactNativeDemo extends Component { constructor(props){
super(props); //设置键值对
AsyncStorage.setItem("name","XYQ", null);
AsyncStorage.setItem("gender","male", null);
AsyncStorage.setItem("age","",function (error) {
if (error) console.log(`--${error}--`)
}); //取出键值对
AsyncStorage.getItem("name",function (error, result) {
if (error) console.log(`--${error}--`)
console.log(`result is ${result}`)
}); //取出所有的键名
AsyncStorage.getAllKeys(function (error, keys) {
keys.map((keyName, i) => {
key=;
console.log(`key is ${keyName}`)
});
});
} render() {
return (
<View style={styles.flex}>
</View>
);
}
} const styles = StyleSheet.create({
flex: {
flex:
}
}); AppRegistry.registerComponent('ReactNativeDemo', () => ReactNativeDemo);
结果如下:
-- ::35.771 [info][tid:com.facebook.react.JavaScript] result is XYQ
-- ::35.771 [info][tid:com.facebook.react.JavaScript] key is name
-- ::35.772 [info][tid:com.facebook.react.JavaScript] key is age
-- ::35.772 [info][tid:com.facebook.react.JavaScript] key is gender
ReactNative: 使用AsyncStorage异步存储类的更多相关文章
- python连接数据库异步存储
当同步写入数据库时,可能会发生下载速度很快,但是写入速度很慢的情况,因此我们采用异步存储写入数据库. 实现异步写入mysql数据库的思路: 1,将数据库的连接数据写入到settings文件中,供后面自 ...
- C# 异步工具类 及一点小小的重构经验
2015年新年第一篇随笔, 祝福虽然有些晚,但诚意还在:新年快乐. 今天主要是想分享一异步工具类,在C/S架构中.先进行网络资源异步访问,然后将回调函数 Invoke到UI线程中进行UI处理. 这样的 ...
- 使用异步存储提升 Web 应用程序的离线体验
localForage 是一个 JavaScript 库,通过使用简单的.类似 localStorage 风格的 API 实现异步存储,帮助你提升 Web 应用程序的离线经验(通过 IndexedDB ...
- [转]mvc3 使用session来存储类来存储用户登陆信息
mvc3 使用session来存储类来存储用户登陆信息 2013-08-26 09:48:56| 分类: NET开发 |举报 |字号 订阅 项目之前的登陆机制是这样的:用户登陆后初始化一个类,类 ...
- 【C语言学习笔记】存储类、链接和内存管理
因为对内存管理部分一直没有很清楚的思路,所以一直在找资料想系统看一下这部分的内容.在C primer plus里看到了这一章,虽然大多都是心知肚明的东西,但是还是很多概念性系统性的东西让我眼前一亮,把 ...
- SQLite存储类(数据类型)
SQLite数据类型更普遍,采用动态类型系统. 说是数据类型,更像是存储类,如:INTEGER存储类就包含多种不同长度的整数数据类型 [INTEGER]带符号的整数类型 [REAL]浮点值,小数类型 ...
- C Primer Plus之存储类、链接和内存管理
存储时期即生存周期——变量在内存中保留的时间 变量的作用域和链接一起表明程序的哪些部分可以通过变量名来使用该变量. 注意:生存期和作用域是两个不同的概念. 作用域 作用域描述了程序中可以访问一个 ...
- C中存储类、链接和内存管理
在C语言中,有5种不同的存储类型,即存储类.在介绍存储类之前,需要首先简单介绍几个术语.如下: 作用域:描述程序中可以访问一个标识符的一个或多个区域.一个C变量的作用域可以是代码块作用域.函数原型作用 ...
- Android(java)学习笔记174:SharedPreferences(轻量级存储类)
1.SharedPreferences是Android平台上一个轻量级的存储类,简单的说就是可以存储一些我们需要的变量信息.2个activity 之间的数据传递除了可以他通过intent来传递数据,还 ...
随机推荐
- [ch04-02] 用梯度下降法解决线性回归问题
系列博客,原文在笔者所维护的github上:https://aka.ms/beginnerAI, 点击star加星不要吝啬,星越多笔者越努力. 4.2 梯度下降法 有了上一节的最小二乘法做基准,我们这 ...
- 【Android - 自定义View】之MeasureSpec简介
MeasureSpec是View测量过程中的一个重要的类,它被用来将View的尺寸规格(SpecSize)和尺寸模式(SpecMode)封装在一起,并提供打包和解包的方法. MeasureSpec虽然 ...
- 磁盘格式化、磁盘挂载、手动增加swap空间 使用介绍
第4周第2次课(4月10日) 课程内容: 4.5/4.6 磁盘格式化4.7/4.8 磁盘挂载4.9 手动增加swap空间 4.5/4.6 磁盘格式化 [root@jimmylinux-002 ~]# ...
- ThinkPHP5入门(基础篇)
ThinkPHP是一个快速.简单的基于MVC和面向对象的轻量级PHP开发框架,自2006年诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简代码的同时,尤其注重开发体验和易用性,并且拥有众多的 ...
- webpack4.0安装及使用(一)
前言 1.什么是webpack 本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler).当 webpack 处理应用程序时,它会递归地构建 ...
- ModelArts微认证零售客户分群知识点总结
\ 作者:华为云MVP郑永祥
- 即将到来的“分布式云”(DPaaS):分布式计算+ DB +存储即服务
我在区块链会议上就即将到来的公共"分布式云"系统进行了讨论,该系统将主流的公共云平台(如AWS,Azure,Google Cloud,Heroku等)与区块链和P2P网络相结合,比 ...
- “copy” 与 “=“赋值
前拷贝 与 赋值 >>> a = {1:'one',2:'two',3:'three'}>>> b = a.copy()>>> c = a&g ...
- LNMP的搭建 及地址转换
1. LNMP 先安装nginx yum -y install gcc openssl-devel pcre-devel wget http://nginx.org/download/ngin ...
- luogu P2296 寻找道路 |最短路
题目描述 在有向图 G 中,每条边的长度均为 1,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 路径上的所有点的出边所指向的点都直接或间接与终点连通. 在满足条件 1 的 ...