这是一个很好的问题,我以前也遇到过。
请记住,Flux 最重要的一点是数据始终以一种方式流动。你已经知道这一点——我提出它是因为这句话有很大的澄清力,并且几乎可以回答你可能对 Flux 提出的任何问题。
操作将数据发送到商店,因此,如果您将逻辑添加到检查商店中某物的价值的操作中,那么您将向错误的方向发送数据,与流程相反。
那么 Flux 应用程序的哪个部分从商店接收数据?意见。_ 这就是你的答案。
你的视图持有缓存逻辑的想法可能会让人觉得很奇怪,但想想缓存是什么:
- 我需要一些数据。
- 我已经有这些数据了吗?如果不...
- 去实现它(梦想);去得到它(东西。
视图句柄 #1。这很简单。而#3 显然是由你的行为来处理的。但事实证明#2,至少在 Flux 应用程序中,也是应该在你的视图中处理的——或者更具体地说,你的控制器视图。控制器视图是 Flux 中经常被忽视的部分,可能是因为控制器的概念与 MVC 密切相关。但是 Flux 也有它们!从通量网站:
控制器确实存在于 Flux 应用程序中,但它们是控制器视图——视图通常位于层次结构的顶部,从存储中检索数据并将这些数据传递给它们的子级。
假设您使用的是 React,这个想法听起来应该很熟悉。较高级别的 React 组件是控制器,而较低级别的组件更“纯”。
另一种思考方式是注意动作只是调度程序助手。(如果我没记错的话,当 Facebook 第一次引入 Flux 时,他们甚至没有提到动作。)当你调用一个动作时,你已经做出了调度的决定:唯一的问题是what,而不是if。
读回来,我意识到这似乎都是没有区别的区别,但主要的收获是,不,动作不能检查商店的状态。他们只能通过调度程序与他们通信。您可能会找到一种使其在实践中发挥作用的方法(不应该打折!),但这不是惯用的 Flux。
我希望这是有道理的!