反应本机,Redux,领域数据流

时间:2019-02-12 09:51:45

标签: javascript react-native redux realm redux-thunk

我的架构基于 @manggit 的中性文章part 1part 2。 Redux的传统同步数据流为Action -> Reducer -> Container -> Component,并且在进行数据库操作时调度异步操作。但是,关键的区别是我有一个“轮询”后台任务,该任务打包数据并每X秒发出一次API请求。这个Poller根本没有连接到Redux,也没有直接与UI交互。但是,它确实会与数据库进行交互,并且会更新Realm中确实影响UI状态的其他对象。

例如:

  1. UI组件调度'SAVE_CHAT_MESSAGE'操作。通过一次重击,聊天消息被写入数据库,结果被传递到reducer。

  2. 轮询器将在下次数据库定期检查时接收此新消息,并将其打包以发送到后端。打包的消息将另存为单独的对象,准备发送。

  3. 一旦轮询器发送了打包的消息并收到API响应,我便想更新数据库中原始聊天消息对象的状态并更新Redux存储以反映网络状态。

当前,由于Poller未连接到Redux存储并且不调度动作,因此无法更新状态。

我还应该注意,由于应用程序是多用户的,因此我避免将整个数据库放入Redux存储或使用Reduxpersist。

建议的解决方案

我认为最好的解决方案是允许Poller从Redux状态读取而不是仅从数据库读取,从而将Poller纳入Redux的范围。以 @manggit 的示例为基础:

Diagram illustrating the "Poller"s placement within the Redux scope

轮询器现在可以访问Redux状态,并将保持其状态,以从Redux状态读取聊天消息状态。它还会打包它的API消息,并将它们存储在数据库和Redux状态中。

帖子

我没有包括代码示例,因为我的问题比实现更具有概念性,并且很多问题都适合于样板代码。

0 个答案:

没有答案