React + Flux中的REST轮询

时间:2016-07-07 17:16:21

标签: reactjs flux reactjs-flux

我是新手,这是一个最佳实践问题。

我有一台服务器,我正在将我的应用程序记录下来,在成功登录后,我返回了一个tokenId以及我放入商店的该令牌的到期时间。

tokenId附加到后续API请求以确保我的会话有效。在超过到期时间之前,我需要发送生成新tokenId的请求。

最佳投票地点(setTimeout)令牌重生在哪里?我相信从商店调用Action或API Util会破坏Flux Flow图,这不是View应该负责的逻辑......

1 个答案:

答案 0 :(得分:2)

这是一般问题的特定版本“React / Flux架构中应该触发异步操作的位置?”我对此有很多讨论,没有一个“正确”的答案。一些选择:

  • 从商店触发,在处理updateToken操作时启动超时。这具有将所有业务逻辑保留在商店中的吸引力,但使商店更难以测试和推理。有一种观点认为,保持所有商店流程同步可以简化事情。

  • 从React 触发,位于您的顶级App组件或特殊的高阶组件中。您可以使用componentWillReceiveProps检查令牌值的更改并启动计时器。这有一些吸引力,因为您已经在监听商店更改,并且您可以利用各种生命周期事件(例如清除componentWillUnmount上的计时器)。你是对的,这不是“视图”逻辑,但是顶层的React组件通常扮演的是控制器角色而不是视角。

  • 触发“登录”操作。这或多或少是Redux / thunk如何做到的,将异步进程留给了操作本身,但在Flux实现中并不常见。

  • 拥有一个单独的API控制器,它使用操作与商店进行通信。有人仍然需要触发loginController.login(),但是该控制器会处理更多异步进程,并且更新会通过操作进入存储。该控制器可能对令牌和续订的细节负全部责任,因此商店不必了解它。