Flux商店改变其他商店

时间:2015-10-20 16:29:11

标签: javascript reactjs flux

我正在使用Flux和React创建一个应用程序,这是一款游戏...而且这个应用程序有3个商店:

GameStore - >包含已完成的游戏状态,玩家获胜的次数以及此内容

CounterStore - >是一个每1秒自触发的倒计时商店,并且计数器组件会自行更新。

BlockStore - >这与游戏组件有关,游戏组件是用户可以进行交互的一种块。

因此,每当我点击一个Block时,我会触发一个动作并在BlockStore上获取它。 BlockStore做了一些魔术,并确定单击的块是否正确,如果是,它会更新GameStore(用户点击正确块的次数)并更新CounterStore(这会增加用户的计时器)。 / p>

此外,每当CounterStore变为0时,它也会更改GameStore以设置用户丢失。

这感觉完全错了,我的商店以某种方式连接......每个动作几乎改变了所有商店,但是一些动作取决于商店结果,改变其他商店(这令人困惑:S)。

我想知道我是否以正确的方式做到这一点,也许我应该将所有内容放在一个商店中(这将使其难以维护),或者删除一些商店并将某些东西视为组件状态直接(例如计数器)。

我迷失了。

1 个答案:

答案 0 :(得分:0)

https://facebook.github.io/flux/docs/overview.html拉出来:

  

商店包含应用程序状态和逻辑。他们的作用有点   类似于传统MVC中的模型,但它们管理的状态   许多对象 - 它们不代表像ORM这样的单一数据记录   模特呢。它们也不是Backbone的集合。多于   只需管理一组ORM风格的对象,商店就可以管理   应用程序中特定域的应用程序状态

你的GameStore应该不应该为每个块保存信息。 BlockStore应该保存块和与各个块有关的数据。由于您有其他数据描述游戏的整体状态,我建议有第二个商店专门用于保持该状态(即一个持有计数器的状态商店,在场/完成,得分等)。