哪里将非ui逻辑放在react / redux应用程序中?

时间:2016-05-28 05:26:15

标签: javascript reactjs redux

我正在写一个react / redux应用程序,它有一个不时触发事件的Job对象。在这些事件上,用户应该做出反应。我可以轻松编写显示此类工作或事件的React组件,但不知道何时将逻辑放在

  • 用户不在“工作”页面上
  • 并且事件发生
  • 我想弹出通知

当然,一旦我进入商店,我也可以创建通知。

  1. 我应该在一个render()没有的React容器中处理这样的逻辑吗?
  2. 或者在加载作业数据时使用vanilla JS处理它?
  3. 或者在存储数据时在reducer中处理它? (可能不推荐)
  4. 我对选项二的问题是我不知道如何从完全特殊的代码访问redux存储,因为我的商店不是全局对象。

    你推荐什么?

1 个答案:

答案 0 :(得分:3)

一般来说,您需要访问存储的代码(用于调度或接收状态更新)的两个位置是中间件或连接组件。如果您特别想要响应正在进行的操作,那么您将需要使用中间件。

几周前,我在聊天讨论中实际上将一个示例计时器中间件组合在一起。我只是将它作为一个要点粘贴在这里作为例子:https://gist.github.com/markerikson/ca96a82d6fdb29388aca4052a9455431。说明在后台异步执行某些操作的想法。

您可能还想查看我的Redux插件目录中的中间件列表:https://github.com/markerikson/redux-ecosystem-links/blob/master/middleware.md。许多执行背景逻辑的方法示例。

最后,https://github.com/yelouafi/redux-saga(它本身就是一个中间件)是一个相当常见的用于执行背景逻辑的库。