【发布时间】:2016-02-11 22:31:12
【问题描述】:
我无法理解使用 Flux 模式执行此操作的最佳方法是什么。例如,假设我有一个userStore,我会听它。一旦更改,我需要获取user.name 并访问colors[user.name] - 但colors 对象来自我拥有的另一个colorsStore 商店。这是它的精髓:
var self = {};
userStore.addListener(function(user) {
// dependency with the colors store
var color = self.colors[user.name]
})
colorsStore.addListener(function(colors) {
self.colors = colors;
})
actions.getUser() // modifies userStore
actions.getColors() // modifies colorsStore
问题在于这两个操作是异步的(例如,它们从 AJAX 调用中获取数据)。考虑到这一点,userStore 可能会在从其他商店填充 self.colors 变量之前发生变化。
这是如何使用 Flux 模式处理的? Dispatcher 对此有帮助吗?抱歉,我是 Flux 模式的新手。直观地说,我会简单地以适当的顺序调用异步操作,例如:
actions.getColors() // need to populate self.colors before running getUser()
.then(actions.getUser())
但想知道是否有更 Flux 的方式来做到这一点。
【问题讨论】:
-
为什么没有一个通用的 onChange 函数,您可以从这两个侦听器中调用它?检查颜色是否已经设置..如果没有,则在用户进入时设置用户..当颜色进入时,您有颜色和用户,以便您可以正确访问它
-
你考虑过使用 promise 吗?这听起来像是
promise.all的经典用例 -
colorsStore.colors 会改变吗?其他组件是否使用colorsStore.colors。
-
@JanakaStevens 是的,是的。
-
是否只是连接的两个商店的初始 ajax 调用?
标签: javascript reactjs flux