2

我正在考虑构建一个离线的第一个 React Native Expo 应用程序,它会在设备连接时自动将数据推送到 API。但是,我正在努力了解这在世博会中是否可行,并且需要一些指导。

该应用程序需要存储来自 API 的数据以供离线使用(大概在首次加载时,然后将用于填充表单中的字段)。表单需要离线工作,输入数据存储在设备上,直到它收到新的连接。此时,应用程序应该将数据推送到 API(而应用程序在后台)。所以我需要做很多事情:

  1. 首次启动时自动从 API 下载和存储数据。
  2. 存储输入数据 - 离线时来自表单字段。
  3. 后台同步 - 在收到新连接时上传此用户表单数据,无论应用程序是否在后台运行。
  4. 在 Android 和 iOS 设备上工作。

我一直在看redux-offline,但不确定它是否仍受支持和/或是否会满足所有四个要求?还有redux-persist但我看不出这如何满足后台同步?

感谢您的任何帮助/指导!

4

1 回答 1

0

从我的角度来看,redux-persistredux-offline. 我选择redux-persist使用useNetInfo挂钩来收听网络可用性。

1. 首次启动时自动从 API 下载和存储数据

应用启动时,查询初始数据并分发到 redux store 并通过以下方式自动同步到本地存储redux-persist

2. 存储输入数据 - 离线时来自表单字段。

使用useNetInfo,应用程序可以检测网络连接状态,当未连接时,发送到带有标志的 redux store 以指示离线unsynched data

您需要编写一个网络连接侦听器,该侦听器在网络状态更改时执行,unsynched data并在可用时持续跟踪和与数据库同步,并清除那些临时数据(如表单值)。

3.后台应用同步

Expo SDK 提供 API https://docs.expo.dev/versions/latest/sdk/background-fetch/ 在一定的时间阈值连续运行后台任务。

当应用程序处于后台时,您可以在网络返回时同步离线数据。

免责声明:后台任务在 React 组件树之外运行。您无法通过react-redux's store component or hooks based API.

redux-persist使用异步存储保存数据,您需要直接访问数据,如下所示。

AsyncStorage.getItem("persist:[REDUCER_CONTAIN_INTERESTED_DATA]")

于 2022-02-25T22:43:07.783 回答