React Native之数据存储技术AsyncStorage
1. 如何将数据存储到本地?
数据存储是开发APP必不可少的一部分,比如页面缓存,从网络上获取数据的本地持久化等,那么在RN中如何进行数据存储呢?
RN官方推荐我们在RN中使用AsyncStorage进行数据存储
2. 什么是AsyncStorage?
2.1 特点
- 简单的,异步的,持久化的key-value存储系统
- AsyncStorage也是React Native官方推荐的数据存储方式,旨在代替LocalStorage
2.2 AsyncStorage在ios中存储的两种情况
- 如果存储的内容较小,那么AsyncStorage会将存储的内容放在一个序列化的字典中
- 如果存储的内容较大,那么AsyncStorage会将存储的内容放在一个单独的文件中
2.3 AsyncStorage在android中存储也分为两种情况:
- AsyncStorage会将数据存储在RocksDB或者SQLite中,具体存在RocksDB中还是SQLite中这取决于设备支持哪一种存储方式。
3. 如何使用AsyncStorage?
首先导入AsyncStorage作为RN一个标准组件使用
import AsyncStorage from '@react-native-community/async-storage';
//import { AsyncStorage } from 'react-native';
在最新的react-native版本中已经将AsyncStorage分离出去了,然后在android上需要手动link一下,具体参照我写的一篇关于link的文章点击查看手动link教程
3.1 存储数据
/**
* 存储数据
*
* @memberof AsyncStorageDemoPage
*/
async doSave() {
// 用法一
AsyncStorage.setItem(KEY, this.value, err => {
err && console.log(err.toString());
})
// 用法二
AsyncStorage.setItem(KEY, this.value)
.catch(err => {
err && console.log(err.toString());
})
// 用法三
try {
await AsyncStorage.setItem(KEY, this.value)
} catch (err) {
err && console.log(err.toString());
}
}
3.2 获取数据
/**
* 获取数据
*
* @memberof AsyncStorageDemoPage
*/
async getData() {
// 用法一
AsyncStorage.getItem(KEY, (err, value) => {
this.setState({
showText: value
});
console.log(value);
err && console.log(err.toString());
})
// 用法二
AsyncStorage.getItem(KEY)
.then(value => {
this.setState({
showText: value
})
})
.catch(err => {
err && console.log(err.toString());
})
// 用法三
try {
const value = AsyncStorage.getItem(KEY);
this.setState({
showText: value
});
} catch (err) {
err && console.log(err.toString());
}
}
3.3 移除数据
/**
* 移除数据
*
* @memberof AsyncStorageDemoPage
*/
async doRemove() {
// 用法一
AsyncStorage.removeItem(KEY, err => {
err && console.log(err.toString());
})
// 用法二
AsyncStorage.removeItem(KEY)
.catch(err => {
err && console.log(err.toString());
})
// 用法三
try {
await AsyncStorage.removeItem(KEY);
} catch(err) {
err && console.log(err.toString());
}
}
3.4 AsyncSorage常用API
React Native之数据存储技术AsyncStorage的更多相关文章
- React Native之持久化存储(AsyncStorage、react-native-storage)的使用
AsyncStorage是一个简单的.异步的.持久化的Key-Value存储系统,它对于App来说是全局性的.这是官网上对它的介绍.可以知道,这个asyncstorage也是以键值对的形式进行存储数据 ...
- Android实现数据存储技术
转载:Android实现数据存储技术 本文介绍Android中的5种数据存储方式. 数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是: 1 使用Shar ...
- Android数据存储技术
Android提供了4种数据存储技术,分别是SharedPreferences.Files.SQLite数据库和网络存储数据.(有的开发者认为使用ContentProvider也可以算是一种,但我觉得 ...
- 安卓开发_数据存储技术_sqlite
一.SQLite SQLite第一个Alpha版本诞生于2000年5月,它是一款轻量级数据库,它的设计目标是嵌入式的,占用资源非常的低,只需要几百K的内存就够了.SQLite已经被多种软件和产品使用 ...
- 安卓开发_数据存储技术_SharedPreferences类
SharedPreferences类 供开发人员保存和获取基本数据类型的键值对. 该类主要用于基本类型,例如:booleans,ints,longs,strings.在应用程序结束后,数据仍旧会保存. ...
- 任何国家都无法限制数字货币。为什么呢? 要想明白这个问题需要具备一点区块链的基础知识: 区块链使用的大致技术包括以下几种: a.点对点网络设计 b.加密技术应用 c.分布式算法的实现 d.数据存储技术 e.拜占庭算法 f.权益证明POW,POS,DPOS 原因一: 点对点网络设计 其中点对点的P2P网络是bittorent ,由于是点对点的网络,没有中心化,因此在全球分布式的网
任何国家都无法限制数字货币.为什么呢? 要想明白这个问题需要具备一点区块链的基础知识: 区块链使用的大致技术包括以下几种: a.点对点网络设计 b.加密技术应用 c.分布式算法的实现 d.数据存储技 ...
- React Native 之 数据持久化
前言 因为 实战项目系列 涉及到数据持久化,这边就来补充一下. 如本文有错或理解偏差欢迎联系我,会尽快改正更新! 如有什么问题,也可直接通过邮箱 277511806@qq.com 联系我. demo链 ...
- 【Cocos2d-x游戏开发】Cocos2d-x中的数据存储技术
一.引言 数据存储和网络功能可以说是一款游戏中必不可少的功能,如果一款游戏不能保存进度那么它的可玩性必然大打折扣(试想一下,玩家辛辛苦苦玩了一整天的游戏,结果退出时告诉人家不能保存关卡信息,你明天还得 ...
- 详解Android数据存储技术
前言 学习Android相关知识,数据存储是其中的重点之一,如果不了解数据,那么让你跟一款没有数据的应用玩,你能玩多久呢?答案是这和没有手机几乎是差不多的.我们聊QQ,聊微信,看新闻,刷朋友圈等都是看 ...
随机推荐
- JavaScript - Scope of variables
It's important to note, especially if you have come to JavaScript from another language, that variab ...
- Web API: Security: Basic Authentication
原文地址: http://msdn.microsoft.com/en-us/magazine/dn201748.aspx Custom HttpModule code: using System; u ...
- Javascript的V8引擎研究
1.针对上下文的Snapshot技术 什么是上下文(Contexts)?实际是JS应用程序的运行环境,避免应用程序的修改相互影响,例如一个页面js修改内置对象方法toString,不应该影响到另外页面 ...
- Shell基础-通配符
* - 通配符,代表任意字符 ? - 通配符,代表一个字符 # - 注释 | - 分隔两个管线命令的界定 ; - 连续性命令的界定 ~ - 用户的根目录 $ - 变量前需要加的变量值 ! - 逻辑运算 ...
- 07 go语言
Home Alexey Palazhchenko edited this page on 9 Jul · 89 revisions Welcome to the Go wiki, a collec ...
- 缓存数据库-redis(管道)
一:Redis 管道技术 Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务.这意味着通常情况下一个请求会遵循以下步骤: 客户端向服务端发送一个查询请求,并监听Socket返回,通常 ...
- python网络编程-多进程multiprocessing
一:mutilprocess简介 多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的任务放到后台去处理. 用户界面可以更加吸引人,这样比如用户点击了一个按钮去 ...
- Robot Framework测试框架用例脚本设计方法
Robot Framework介绍 Robot Framework是一个通用的关键字驱动自动化测试框架.测试用例以HTML,纯文本或TSV(制表符分隔的一系列值)文件存储.通过测试库中实现的关键字驱动 ...
- Unix IPC之Posix消息队列(3)
struct mq_attr { long mq_flags; /* message queue flag : 0, O_NONBLOCK */ long mq_maxmsg; /* max numb ...
- How to tell your iPhone application that location services are required | The Agile Warrior
div{padding-bottom:10px}.b_vPanel>div:last-child{padding:0}.banner a{color:#1020d0} --> Below ...