使用React Native时,我存储数据的选项有哪些?(iOS和Android)
我在React原生世界还是新手,通常在移动/原生世界也是如此,我发现在数据持久性方面文档有点缺乏 我在React Native中存储数据的选项是什么?每种类型的含义是什么?例如,我看到有本地存储和异步存储,但我也看到了领域之类的东西,我很困惑所有这些如何与外部数据库一起工作 我特别想知道:使用React Native时,我存储数据的选项有哪些?(iOS和Android),android,ios,react-native,Android,Ios,React Native,我在React原生世界还是新手,通常在移动/原生世界也是如此,我发现在数据持久性方面文档有点缺乏 我在React Native中存储数据的选项是什么?每种类型的含义是什么?例如,我看到有本地存储和异步存储,但我也看到了领域之类的东西,我很困惑所有这些如何与外部数据库一起工作 我特别想知道: 数据持久化有哪些不同的选项 对于每种情况,持久性的限制是什么(即数据何时不再可用)?例如:关闭应用程序、重新启动手机等 对于每一种,在iOS和Android中实现是否存在差异(一般设置除外) 脱机访问数据的
- 数据持久化有哪些不同的选项
- 对于每种情况,持久性的限制是什么(即数据何时不再可用)?例如:关闭应用程序、重新启动手机等
- 对于每一种,在iOS和Android中实现是否存在差异(一般设置除外)
- 脱机访问数据的选项比较如何?(或者离线访问通常是如何处理的?)
- 我还需要考虑其他因素吗
React提倡一种反应式的应用程序创建方式,Redux非常适合它。您应该在使用常规Android或iOS应用程序中使用的选项之前尝试一下。另外,你会发现更多的文档和帮助。
上面的人命中了正确的存储注释,但是如果你还需要考虑任何需要存储的PII数据,那么你也可以使用像ASyncStorage未加密的东西一样隐藏到密钥链中。它可以作为持久化配置的一部分应用在redux persist中。
以下是我在确定推进当前几个应用程序项目的最佳方式时学到的知识 异步存储(以前是响应本机的“内置”存储,现在自行移动) 我将异步存储用于生产应用程序。存储保留在设备本地,未加密(如另一个答案中所述),如果删除应用程序,存储将消失,但应作为设备备份的一部分保存,并在升级过程中保持不变(本机升级和通过CodePush进行的代码升级) 结论:局部保存;您可以提供自己的同步/备份解决方案 SQLite 我参与的其他项目都使用sqlite3进行应用程序存储。这为您提供了类似SQL的体验,可压缩数据库也可以在设备之间传输。我没有任何将它们同步到后端的经验,但我认为存在各种库。有用于连接到SQLite的RN库 数据以传统数据库格式存储,数据库、表、键、索引等都以二进制格式保存到磁盘。可以通过命令行或具有SQLite驱动程序的应用程序直接访问数据 结论:局部保存;您提供同步和备份 Firebase Firebase提供了一个实时noSQL数据库和一个JSON文档存储(如MongoDB),用于保持1到n个客户端的同步。这些文档讨论了离线持久性,但仅针对本机代码(Swift/Obj-C、Java)。React Native使用的Google自己的JavaScript选项(“Web”)不提供缓存存储选项(见下面的2/18更新)。编写该库时假设web浏览器将要连接,因此将存在半持久连接。您可以编写一个本地缓存机制来补充Firebase存储调用,也可以编写本机库和React native库之间的桥梁 2018年2月更新 我找到了一个可以为本机iOS和store.subscribe(async()=> await AsyncStorage.setItem("store", JSON.stringify(store.getState())))
import SyncStorage from 'sync-storage';
SyncStorage.set('foo', 'bar');
const result = SyncStorage.get('foo');
console.log(result); // 'bar'