【发布时间】:2015-08-30 08:05:18
【问题描述】:
Flux 的目标之一是通过减少疯狂的纠缠依赖项来使应用程序更可预测。使用 Dispatcher,您可以定义更新 Store 的严格顺序。这创建了一个很好的树依赖层次结构。这就是理论。考虑以下情况:
我有一个游戏。位于层次结构顶部的商店是 StateStore,它只保存当前游戏状态,即。 e. 播放中,暂停,结束。它通过 PAUSE 或 RESUME 等操作进行更新。所有其他商店都依赖于此。因此,当商店处理某种更新操作(即 MOVE_LEFT)时,它首先检查 StateStore 以及游戏是否暂停或结束,它忽略了这个动作。
现在假设有一个动作会导致游戏结束。它更新了一些商店并且商店决定游戏不应该继续(“游戏角色向左移动并落入陷阱”)。所以StateStore 中的状态应该变为over。我该怎么做?
理论上应该是这样的:
- 给定商店首先更新并到达游戏结束点
- StateStore 之后会更新(它等待另一个存储),检查另一个存储并将状态切换到over。
不幸的是,其他商店也需要访问 StateStore 来检查当前的游戏状态,看看它是否应该更新(即游戏没有暂停)。它们显然相互依赖。
可能的解决方案:
- 将这些商店合并为一个商店。这可能会导致我的整个应用程序崩溃到一个单独的商店中,这引发了一个问题,在这种情况下 Flux 是否是一个好主意。
- 区分更新顺序和只读依赖。所有商店都将按照严格的顺序更新,但是它们可以任意相互读取。因此,StateStore 将针对每个操作检查所有现有商店,如果其中任何一个表明游戏结束,它会将状态更改为 over,从而有效地阻止所有其他商店更新。
你怎么看?
【问题讨论】:
-
你找到解决办法了吗?我现在也有同样的问题..
-
我添加了一个可能对你有帮助的答案。
标签: javascript flux