Flux / React Native中的dispatch和emit之间的区别

时间:2016-05-20 04:20:40

标签: flux reactjs-flux

我是Flux / React Native的新手。

我对使用Flux中的dispatch vs emit非常困惑。

它们之间的主要区别是什么?当我在dispatch和emit中使用相同的Action Type时会发生什么。

例如:

Dispatcher.dispatch({
    actionType: 'ACTION1'
});
SomeStore.emit('ACTION1');

1 个答案:

答案 0 :(得分:4)

在Flux中,商店会发出事件,表示其状态发生了变化。这种改变'事件由视图监听。这将提示视图从商店获取新状态。请注意,该事件从不包含有关新状态的有效负载/信息。这真的就是它所读到的 - 一个事件。

行动略有不同。虽然它们确实是事件,但它们是我们域中发生的事情,例如,将项目添加到购物车。并且它们携带有效载荷,其中包含有关动作的信息,例如,

    {
      id: ‘add-item-to-cart’,
      payload: {
        cartId: 123,
        itemId: 1234,
        name: ‘Box of chocolates’,
        quantity: 1
      }
    }

已发送行动'从视图和商店响应发送可能会改变其状态并发出变化'事件。

基本上是这样的:

  1. 视图通过调度程序调度带有效负载的操作(通常由于用户交互)
  2. 商店(之前已经向调度员注册)
    将被通知该操作并使用有效负载更改其状态并发出事件。
  3. 视图(先前已在商店中注册)被通知更改事件,该事件使其从商店获得新状态并自行更改。
  4. 这就是区别。关于问题"在发送和发出"中使用相同的动作类型,它确实没有意义,是吗?

    我建议你阅读这篇博文 - http://blog.andrewray.me/flux-for-stupid-people/(标题意味着没有进攻BTW :))

    你已经知道了这一点,但我再说一遍: A unidirectional data flow是Flux模式的核心。这意味着数据(不是控制)总是在一个方向上流动。