关于存储在Flux中的三个问题

时间:2018-02-16 08:15:50

标签: javascript reactjs flux reactjs-flux

关注the flux concepts我们可以得到下一个我无法找到解释的断言。

  

每家商店都会收到所有行动。

为什么?我的建议:由于商店内容有些商业逻辑我们必须为其提供所有可能的更改和数据,以便商店可以决定如何处理他们自己。

  

商店中的数据只能通过响应操作进行变异。

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

  

每次商店的数据发生变化时,都必须发出"更改"事件

为什么? 我无法理解这一点。

1 个答案:

答案 0 :(得分:1)

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

  

每家商店都会收到所有行动。

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

但并非所有操作都会导致商店发生变化。但调度员根本不关心,因为它对商店实施一无所知。它只是告诉所有商店这个动作发生了,用它做你想做的事情或继续你的生活而不关心

  

商店中的数据只能通过响应操作进行变异。

用不同的方法做这件事可能会违反单向数据流。以这种方式执行操作可确保应用程序的所有部分都基于所执行的操作具有正确的状态。

如果不这样做,你就会放弃其中一种通量强度。根据调度的操作更新您的商店,其他商店也会意识到该操作已经发生,因此如果他们愿意,可以对其做出反应。如果您直接更新商店,您最终将无法清楚地了解您的应用程序中哪些部分正在改变您商店的状态。

  

每次商店的数据发生变化时,都必须发出“更改”事件。

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

这与第一个引用相关。商店不知道听众是否依赖于它的数据。通过发出变化,它将让所有听众知道嘿,我改变了。确保您拥有我所有的最新更改。如果您没有发出更改,则侦听器最终可能会根据旧数据显示内容。

所有这些陈述都与同一事件有关:如果您的应用程序中发生了某个操作,请不要对应用程序的哪个部分想知道其详细信息做出任何假设。如果他们愿意,请确保每个人都可以采取行动。