Store in Flux的三个问题

Three questions about Store in Flux

the flux concepts 之后,我们可以获得下一个我找不到解释的断言。

Every store will receive every action.

为什么? 我的建议:由于 store 包含一些业务逻辑,我们必须为其提供所有可能的更改和数据,以便商店可以自行决定如何处理它们。

The data in a store must only be mutated by responding to an action.

为什么?我的建议:原因是在不响应操作的情况下违反了单向数据流。

Every time a store's data changes it must emit a "change" event.

为什么?这个点我看不懂

Flux 只是管理应用程序数据流的一种方式,因此由开发人员确保这确实发生。但我会尝试描绘出 为什么 这些概念是 Flux 的一部分。

Every store will receive every action.

如果您的应用程序中只有一个调度程序,则每个商店都将侦听通过该调度程序调度的操作。商店是否应对分派的操作采取行动取决于您,但为了能够对其做出反应,商店必须知道它

不过,并非所有操作都会导致商店发生变化。但是调度程序根本不在乎,因为它不知道商店实现的任何事情。它只是告诉所有的商店这个动作发生了,用它做你想做的,或者继续你的生活而不关心

The data in a store must only be mutated by responding to an action.

你是对的,用不同的方法来做可能会违反单向 data-flow。以这种方式做事可以确保应用程序的所有部分都根据发生的操作具有正确的状态。

如果不这样做,您将放弃其中一种通量强度。根据派发的操作更新您的商店,其他商店也会知道该操作已发生,并根据需要对其做出反应。如果您直接更新商店,您最终将无法清楚地了解您的应用程序的哪些部分正在改变您的商店状态。

Every time a store's data changes it must emit a "change" event.

人们经常将助焊剂应用程序中的商店描述为真实来源。当商店的数据发生变化时,数据可视化的基础也​​会发生变化。您想确信如果我的商店具有一定的价值,这就是我的应用程序使用的数据。

这与这里的第一句话有关。商店不知道听众是否依赖于它的数据。通过发出变化,它会让所有听众知道 嘿,我变了。确保你有我所有的最新更改。如果您不发出更改,侦听器最终可能会显示基于旧数据的内容。


所有这些陈述都与同一件事相关:如果您的应用程序中发生了某个操作,请不要假设您的应用程序的哪一部分想要了解它的详细信息。 确保每个人都可以根据需要采取行动。