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的更多相关文章

  1. React Native之持久化存储(AsyncStorage、react-native-storage)的使用

    AsyncStorage是一个简单的.异步的.持久化的Key-Value存储系统,它对于App来说是全局性的.这是官网上对它的介绍.可以知道,这个asyncstorage也是以键值对的形式进行存储数据 ...

  2. Android实现数据存储技术

    转载:Android实现数据存储技术 本文介绍Android中的5种数据存储方式. 数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是: 1 使用Shar ...

  3. Android数据存储技术

    Android提供了4种数据存储技术,分别是SharedPreferences.Files.SQLite数据库和网络存储数据.(有的开发者认为使用ContentProvider也可以算是一种,但我觉得 ...

  4. 安卓开发_数据存储技术_sqlite

    一.SQLite SQLite第一个Alpha版本诞生于2000年5月,它是一款轻量级数据库,它的设计目标是嵌入式的,占用资源非常的低,只需要几百K的内存就够了.SQLite已经被多种软件和产品使用 ...

  5. 安卓开发_数据存储技术_SharedPreferences类

    SharedPreferences类 供开发人员保存和获取基本数据类型的键值对. 该类主要用于基本类型,例如:booleans,ints,longs,strings.在应用程序结束后,数据仍旧会保存. ...

  6. 任何国家都无法限制数字货币。为什么呢? 要想明白这个问题需要具备一点区块链的基础知识: 区块链使用的大致技术包括以下几种: a.点对点网络设计 b.加密技术应用  c.分布式算法的实现 d.数据存储技术 e.拜占庭算法 f.权益证明POW,POS,DPOS 原因一: 点对点网络设计 其中点对点的P2P网络是bittorent ,由于是点对点的网络,没有中心化,因此在全球分布式的网

    任何国家都无法限制数字货币.为什么呢? 要想明白这个问题需要具备一点区块链的基础知识: 区块链使用的大致技术包括以下几种: a.点对点网络设计 b.加密技术应用  c.分布式算法的实现 d.数据存储技 ...

  7. React Native 之 数据持久化

    前言 因为 实战项目系列 涉及到数据持久化,这边就来补充一下. 如本文有错或理解偏差欢迎联系我,会尽快改正更新! 如有什么问题,也可直接通过邮箱 277511806@qq.com 联系我. demo链 ...

  8. 【Cocos2d-x游戏开发】Cocos2d-x中的数据存储技术

    一.引言 数据存储和网络功能可以说是一款游戏中必不可少的功能,如果一款游戏不能保存进度那么它的可玩性必然大打折扣(试想一下,玩家辛辛苦苦玩了一整天的游戏,结果退出时告诉人家不能保存关卡信息,你明天还得 ...

  9. 详解Android数据存储技术

    前言 学习Android相关知识,数据存储是其中的重点之一,如果不了解数据,那么让你跟一款没有数据的应用玩,你能玩多久呢?答案是这和没有手机几乎是差不多的.我们聊QQ,聊微信,看新闻,刷朋友圈等都是看 ...

随机推荐

  1. Java并发编程原理与实战二十四:简易数据库连接池

    public class MyDataSource { private static LinkedList<Connection> pool = new LinkedList<> ...

  2. just test css

    沃尔沃而 public void Commit() { if (_disposed) throw new InvalidOperationException(); if (_transaction = ...

  3. C语言的内存对齐

    从一个例子开始 象下面这样定义的结构体占几个字节? typedef struct{ char a; int i; } Sample; char占1个字节,int占4个字节,答案是5个字节? 错了.如果 ...

  4. 浅谈欧几里得算法求最大公约数(GCD)的原理及简单应用

    一.欧几里得算法及其证明 1.定义: 欧几里得算法又称辗转相除法,用于求两数的最大公约数,计算公式为GCD(a,b)=GCD(b,a%b): 2.证明: 设x为两整数a,b(a>=b)的最大公约 ...

  5. python Linux flask uwsgi nginx 在centos7.3部署

    0.直接上uwsgi和nginx安装命令 linux 安装uwsgi yum groupinstall "Development tools" yum install zlib-d ...

  6. 16、DecimalFormat类

    DecimalFormat类概述 在一些金融或者银行的业务里面,会出现这样千分位格式的数字,¥123,456.00,表示人民币壹拾贰万叁仟肆佰伍拾陆元整,java.text包下提供了一个Decimal ...

  7. tensorflow环境安装

    tensorflow环境安装1.安装虚拟机Virtrualbox下载地址:https://www.virtualbox.org/wiki/Downloads 2.下载安装Ubuntu镜像下载地址:ht ...

  8. 关于onConfigurationChanged

    这两天测试app时,发现一个奇怪问题,app在启动后,Activity会onCreate两次,起初以为是横屏设置导致,随即在Activity中添加了android:configChanges=&quo ...

  9. 【黑客免杀攻防】读书笔记17 - Rootkit基础

    1.构建Rootkit基础环境 1.1.构建开发环境 VS2012+WDK8 1.2.构建基于VS2012的调试环境 将目标机.调试机配置在同一个工作组内 sVS2012配置->DRIVER-& ...

  10. python numpy数组中的复制问题

    vector = numpy.array([5, 10, 15, 20]) equal_to_ten_or_five = (vector == 10) | (vector == 5) vector[e ...