React native 如何在react原生应用程序(Redux)中处理本地和云上的数据

React native 如何在react原生应用程序(Redux)中处理本地和云上的数据,react-native,redux,React Native,Redux,我有一个应用程序,其中将包含以下功能: 屏幕: 主页{显示所有类别的最新帖子(API提供每页30篇帖子)} 类别{显示所有类别列表} 按类别{按类别显示最近的帖子(API提供每页30篇帖子)} 发布{用评论显示发布详细信息} 用户配置文件{显示用户配置文件及其最近的帖子(API提供每页30篇帖子)} 配置文件设置{显示可更新字段和更新按钮} 现在,我感到困惑的是: 我应该在开始时用API填充整个存储区,还是应该 在每个屏幕打开时进行API调用 对于更新,比如如果用户喜欢帖子,那么我应该显示一个

我有一个应用程序,其中将包含以下功能:

屏幕

主页{显示所有类别的最新帖子(API提供每页30篇帖子)}

类别{显示所有类别列表}

按类别{按类别显示最近的帖子(API提供每页30篇帖子)}

发布{用评论显示发布详细信息}

用户配置文件{显示用户配置文件及其最近的帖子(API提供每页30篇帖子)}

配置文件设置{显示可更新字段和更新按钮}

现在,我感到困惑的是:

  • 我应该在开始时用API填充整个存储区,还是应该 在每个屏幕打开时进行API调用

  • 对于更新,比如如果用户喜欢帖子,那么我应该显示一个 spinner或其他什么直到API完成,或者我应该更新本地 立即存储值,然后调用API


  • 有很多方法可以解决这个问题。我的建议是:

    1) 我将创建一个模型/管理器来处理也可以访问同一存储的API请求。例如,当屏幕挂载时,使用Home.Manager.getNextPage();它已经知道如何处理api请求,也知道如何处理分页

    因此,所有的计算都将在管理器中。当它获得数据时,它会用它更新存储

    2) 当我构建一个包含like的应用程序时,我也使用了本地数据。我的方法是将时间从上次设置为10秒,这样如果用户喜欢多个帖子,我就可以发送大量内容。因此,服务器不需要处理多个tcp连接,只需要处理一个具有多个数据的连接

    重点是首先将其存储在本地(以防用户在我们更新服务器之前杀死应用程序),然后等待10秒(如果有新的应用程序,则将其添加到数据数组中),如果不只是将数据发送到服务器,则再等待10秒。在服务器返回保存在数据库中的本地数据之前,不要清理该数据

    这样,您可以先显示动画,而不必让用户等待服务器的反馈

  • 最佳实践是为每个组件进行小API调用 您应该在每个屏幕上加载一个加载,然后在中调用API componentDidMount在收到响应后显示数据。 在这里输入代码

  • 对于此类操作,首先,进行API调用,禁用like按钮,在成功调用API后更新存储

  • 由于某些用户双击,请禁用该按钮。这种API的纠结通常是快速的,因此加载没有一个好的UX。加载将在完全动画之前删除。始终更新响应上的存储数据,而不是请求上的存储数据,因为如果API调用失败,您需要恢复存储更改。

    如果我没搞错,如果用户杀死应用程序,那么下次启动时我应该更新数据库吗?如果是的话,那么我应该多开一家商店来跟踪变化吗?是的,但你不需要跟踪变化。当应用程序启动时,您应该检查是否在本地保存了任何内容以更新服务器。如果有,在后台更新它。这种方法的优点是,您可以通过一个请求发送大量更新。您也可以只更新每次单击,但这可能对服务器有害。(确保在后台检查请求是否已完成!)您还可以使用rabbitMQ之类的代理。或者自己建造一个。这将是一个中间服务器,只保留所有用户任务/MSG,并确保主服务器得到它。如果它不工作或忙,它将稍后再试。这会帮你解决一切的。。可能是更简单的解决方案,但您需要学习新技术。。祝你好运如果互联网速度太慢怎么办?这就是我担心的地方,就像他们要等2-3秒一样。比如说边缘连接..他们会看到一个禁用按钮。当用户知道互联网的状态时,他会这样想。互联网连接不良的用户数量远低于互联网速度良好的用户数量。因此,为普通用户创建UX。