Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.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
Reactjs 为什么我们需要不断变化的调度员?_Reactjs_Aurelia_Flux - Fatal编程技术网

Reactjs 为什么我们需要不断变化的调度员?

Reactjs 为什么我们需要不断变化的调度员?,reactjs,aurelia,flux,Reactjs,Aurelia,Flux,这不是一个具体的问题。我正在考虑在Aurelia/Angularjs中实现Flux 在阅读flux时,我并不认为需要调度程序步骤。为什么组件不能直接调用存储来更新和检索数据?这种方法有什么问题吗 例如:如果我有一个CarStore可以创建新车、更新汽车并获取汽车列表(只是CRUD api上的一个薄层),我应该能够通过直接从汽车网格组件调用商店来检索/更新列表。由于商店是一个单件商店,每当列表更新时,cargrid应自动获取新项目。在这种情况下使用dispatcher有什么好处?您可以看到为什么d

这不是一个具体的问题。我正在考虑在Aurelia/Angularjs中实现Flux

在阅读flux时,我并不认为需要调度程序步骤。为什么组件不能直接调用存储来更新和检索数据?这种方法有什么问题吗


例如:如果我有一个
CarStore
可以创建新车、更新汽车并获取汽车列表(只是CRUD api上的一个薄层),我应该能够通过直接从
汽车网格
组件调用商店来检索/更新列表。由于商店是一个单件商店,每当列表更新时,
cargrid
应自动获取新项目。在这种情况下使用dispatcher有什么好处?

您可以看到为什么dispatchers很重要(请查看为什么我们需要dispatcher一节)。在我看来,这个想法基本上是能够以同步方式访问各种存储(一个回调在调用另一个回调之前完成)。这要归功于
waitFor
方法,该方法允许您等待商店完成操作处理(或多个操作)。有一个很好的例子。例如,您的应用程序可能会增长,而不是仅拥有该CarStore,而是拥有另一个更新依赖于CarStore更新的商店。

我使用React native with Redux作为商店/视图状态更新程序创建了几个大型应用程序

调度操作是同步的。使用dispatchers有一个很大的缺点,即会丢失函数签名。(调试、自动捕获类型错误、重构丢失、同一函数的多个声明、列表继续)


从未使用过调度器,因此不会导致任何问题。在这些操作中,我们只需调用getState().dispatch。不管怎么说,这家店是单身的,强烈建议你不要有多家店。(你为什么要这样做…

如果你只拥有一个存储,那么我认为调度器是多余的。但是,如果您有多个存储,那么调度程序很重要,这样操作就不需要知道这些存储中的每一个


请注意,我并不是说如果你只有一家店铺,你就应该抛弃调度员。这仍然是一种很好的模式,因为如果将来需要,它可以为您提供支持多个存储的选项。

为什么不能在组件中管理这种依赖关系?例如,如果您想更新相互依赖的多个商店,您可以使用承诺。例如,当汽车添加到
CartStore
时,我们需要从
WishlistStore
中删除汽车。从您的组件中,您可以向
CartStore
添加一辆汽车,这将返回一个承诺,当它成功时,您可以更新
WishlistStore
。我想您可以这样做,但Flux为您提供了调度器和功能,使其更简单。在极端情况下,你可以用纯JavaScript做任何事情,一个框架只是给你一些工具和模式,让它更容易和/或更好地组织起来。我只是对以这种方式组织程序的基本原理感到好奇。在我看来,调度程序具有所有这种逻辑,而不是每个Flux用户都按照自己的意愿在组件上进行操作。这是一种常见的情况,通常使用相同的方法来解决它会有所帮助。