我是Flux / React Native的新手。
我对使用Flux中的dispatch vs emit非常困惑。
它们之间的主要区别是什么?当我在dispatch和emit中使用相同的Action Type时会发生什么。
例如:
Dispatcher.dispatch({
actionType: 'ACTION1'
});
SomeStore.emit('ACTION1');
答案 0 :(得分:4)
在Flux中,商店会发出事件,表示其状态发生了变化。这种改变'事件由视图监听。这将提示视图从商店获取新状态。请注意,该事件从不包含有关新状态的有效负载/信息。这真的就是它所读到的 - 一个事件。
行动略有不同。虽然它们确实是事件,但它们是我们域中发生的事情,例如,将项目添加到购物车。并且它们携带有效载荷,其中包含有关动作的信息,例如,
{
id: ‘add-item-to-cart’,
payload: {
cartId: 123,
itemId: 1234,
name: ‘Box of chocolates’,
quantity: 1
}
}
已发送行动'从视图和商店响应发送可能会改变其状态并发出变化'事件。
基本上是这样的:
这就是区别。关于问题"在发送和发出"中使用相同的动作类型,它确实没有意义,是吗?
我建议你阅读这篇博文 - http://blog.andrewray.me/flux-for-stupid-people/(标题意味着没有进攻BTW :))
你已经知道了这一点,但我再说一遍: A unidirectional data flow是Flux模式的核心。这意味着数据(不是控制)总是在一个方向上流动。