【问题标题】:How to refresh react native view when the other user changes the same data?当其他用户更改相同的数据时,如何刷新反应原生视图?
【发布时间】:2019-12-28 23:54:07
【问题描述】:

我已将我的数据加载到 react 原生组件中,但是,其他用户可以在另一个应用程序中更改相同的数据。告诉其他应用程序(组件)数据更改刷新的最佳方法是什么?我正在寻找快速简便的方法。

  1. 是推送通知吗?
  2. 打开与服务器的 Web 套接字以进行数据更改?
  3. 是否遵循任何其他标准?

【问题讨论】:

  • 您应该使用套接字来传达更改。
  • 如果数据集的数量很大,使用 Firebase 实时数据库将解决您的问题,如果更改的数量和范围较小,您可以使用 Web 套接字。在这种情况下使用推送通知并不是一个好的解决方案。

标签: ios reactjs react-native react-native-android


【解决方案1】:

编辑:假设您使用 react-redux 来维护应用程序状态,这可能是最好的解决方案:How to refresh a react redux application when data changes on DB outside of the application

您的问题确实需要澄清一下,因为如果您要跨组件发送数据,那么您不需要执行上述任何操作,您可以更改组件的状态并且响应应该更新视图。您还需要提供更多详细信息,说明您是从子组件到子组件还是从父组件到子组件或从子组件到父组件发送数据,以便我可以为您指出适当的 stackoverflow 问题。

见:Send data from child to parent React 或:How to share data between non parent-child react components?

如果您想跨两个不同的应用程序发送数据,

您是使用 react redux 来维护应用程序状态还是使用 react 的内置状态管理?如果您使用的是 react redux 和 redux-persist,我建议您应用一个处理状态更改的中间件,并使用服务器端数据存储和构建同步操作。数据是否需要在您的其他应用程序中实时更新,并且该应用程序也是反应原生的另一个移动应用程序?您是否预计用户会在不同设备上使用相同的应用程序?推送通知只能用于通知用户。我将使用的方法是使用 pouch-db redux-persist 适配器并以这种方式同步状态,以便您的应用程序是否在移动设备、Web 等上运行,状态可以跨设备同步。如果它是相同的数据但针对不同的用户,这仍然可以工作,但不要将非特定于用户的数据的 reducer 耦合到用户。

见:https://github.com/rt2zz/redux-persist

滚动到底部以查看可用于 redux-persist 的数据库引擎

见:https://pouchdb.com/

【讨论】:

  • 后端服务器 = Rest APIs (Spring boot+mysql) 似乎 redux 是用于应用程序内的状态管理,而不是我的情况。数据在两个应用程序之间发生变化。例如,买家需要从卖家那里购买商品,现在卖家需要知道购买请求。有几种方法可以做到这一点。 1. 间隔后,所有应用程序都可以轮询其余 API 以从服务器拉取最新状态。 2. 服务器可以创建一个事件,所有消费者都可以订阅该事件,因为请求将被发出,所有消费者都会知道更改事件并拉取最新的。标准是什么?
  • 我对 spring boot 没有太多经验,但总的来说,您描述的第二条路线似乎更有意义,而且似乎更可靠,尤其是在涉及货币兑换的情况下。我不会依赖基于时间间隔对 API 进行不必要的调用,因为如果服务器和客户端之间存在不一致的状态可能会导致错误。示例:买家 1 的请求被发送到服务器,卖家的应用程序根据间隔刷新,但买家 2 的应用程序仍然显示商品为可用并发送买家请求。卖家只能看到第一个买家的请求。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-19
  • 2011-12-27
  • 1970-01-01
  • 1970-01-01
  • 2016-09-25
  • 1970-01-01
相关资源
最近更新 更多