Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在;回流;,行动的目的是什么?_Javascript_Reactjs Flux_Flux_Refluxjs - Fatal编程技术网

Javascript 在;回流;,行动的目的是什么?

Javascript 在;回流;,行动的目的是什么?,javascript,reactjs-flux,flux,refluxjs,Javascript,Reactjs Flux,Flux,Refluxjs,我已经熟悉了Flux体系结构和Reflux,Reflux是一个更简单的版本,没有调度器,用于ReactJS 在整个流程中,似乎操作有(或至少可以使其具有)明确而非琐碎的目的:它们可以用于更新外部服务(例如,通过API将数据保存回服务器),如本问题所述: 然而,在反流中,操作肯定只是愚蠢的消息解析器。所以我的问题是,它们有什么用途?为什么会有它们?如果视图/组件只是直接调用存储上的方法,会发生什么不好的事情 我将要把我的小应用程序从Flux转换为Return,看起来我将把我当前操作中的所有逻辑都转

我已经熟悉了Flux体系结构和Reflux,Reflux是一个更简单的版本,没有调度器,用于ReactJS

在整个流程中,似乎操作有(或至少可以使其具有)明确而非琐碎的目的:它们可以用于更新外部服务(例如,通过API将数据保存回服务器),如本问题所述:


然而,在反流中,操作肯定只是愚蠢的消息解析器。所以我的问题是,它们有什么用途?为什么会有它们?如果视图/组件只是直接调用存储上的方法,会发生什么不好的事情


我将要把我的小应用程序从Flux转换为Return,看起来我将把我当前操作中的所有逻辑都转移到商店中。在我看来,回流中的行为除了在组件和商店之间充当一个无用的中间人外,什么也做不了。我还缺少什么?

除了在OP评论中指出的在任意数量的商店中监听操作的能力之外:

回流动作也可以接触API等,例如,将其放置在容器中。通常,您会创建一个异步操作,在preEmit钩子中添加一些异步内容,然后在异步工作完成(或失败)时调用“completed”或“failed”子操作。当然,您也可以在preEmit钩子中执行同步工作。我想到了日志记录

也完全可以侦听存储中的操作并在存储中执行异步工作,然后从那里调用.completed或.failed,但我认为已经形成的共识是,存储不应该执行该工作,存储应该只对更改的数据做出反应,而不是执行业务逻辑


异步操作也可以。当然,您也可以实现存储来实现这一点,但我认为,对于数据存储来说,这是一个很大的责任。

“如果您的视图/组件直接调用存储上的方法,会发生什么不好的事情?”——您不会有单向循环。所以你一开始就不会有流量。您缺少的是操作处理程序可能根本不会更改存储。或者可能不仅仅是改变一个存储。“除了在组件和存储之间充当一个无用的中间人之外,什么都不要做”——他们这样做了:他们将您的演示与数据分离。这是有道理的。加上这个作为答案,我很乐意接受。这太少了,不可能是一个真正的答案,我也懒得给出一个合适的答案。让我们看看是否有比我更热情的人来这里;-)对于阅读本文的其他人,我应该补充一点,多个存储也可以监听同一个操作——这是将操作分开的另一个原因。