Flux 设计模式 - 关于视图概念的歧义

Flux design pattern - ambiguity about view concept

看了很多关于 flux 设计模式的解释 1,我很明白它是如何工作的。

dispatcher 很像 JINI 2 查询服务。优点很明显,调度员不需要知道如何执行操作以及由谁来执行。它使您可以灵活地在持续集成中随时添加任何商店。

store是模型和业务逻辑的直接封装。这里没问题,它只需要通知调度员,他将接收操作和有效负载,如果支持则执行操作。

视图是对店内数据的简单解读。但是通知它的方式,回调要求视图知道商店是谁以及它是谁。此外,应用程序需要知道视图是谁以及谁来获取它。

以我的理解,视图破坏了可伸缩性,因为虽然您不需要知道操作是否进行,但您需要知道结果是什么,而视图需要知道存储是什么。除非我们在视图和存储之间以及客户端和视图之间使用另一种调度程序。

你在技术上是正确的,虽然我没有发现这在现实世界的通量应用中是一个痛点。部分原因是只有所谓的 "controller-views" 才能访问通量存储,并且他们全权负责根据通量存储获取数据并将其转换为作为属性传递给其他组件的数据。

例如,在您 link 访问的 Fluxxor "What is Flux" 页面中,有这张图片:

在这样的应用程序中,只有最上面的 "View" 框(带有来自商店的箭头的框;也许它应该标记为 "Controller-View" )真正知道商店并访问来自他们的数据;它下面的其他视图通过道具获取数据(通常数据首先由控制器视图根据其子项的 propTypes 进行转换)。

[编辑:在现代通量应用程序中,这些通常被称为 "containers",除了通过 props 连接普通组件和通量 stores/actions 之外什么都不做。]

如果您不喜欢这种方法,那么在商店和获取商店数据并以某种方式转换它的视图之间引入一个新概念将是微不足道的,这样 none视图需要了解商店(尽管这本质上是控制器视图所做的)。我也非常喜欢将视图 link 组合到商店的想法;有关示例,请参阅 this Fluxxor issue