Flux/React Native 中 dispatch 和 emit 的区别

Difference between dispatch and emit in Flux/React Native

我是 Flux/React Native 的新手。

我对在 Flux 中使用 dispatch 和 emit 感到很困惑。

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

例如:

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

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

操作略有不同。虽然它们确实是事件,但它们是我们领域中发生的事情,例如,将商品添加到购物车。它们携带一个包含有关操作信息的有效负载,例如

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

操作来自视图 'dispatched',商店通过可能更改其状态并发出 'change' 事件来响应调度。

所以基本上:

  1. 视图通过调度程序调度带有负载的操作(通常是由于用户交互)
  2. 商店(之前已向调度员注册)
    收到操作通知并使用有效负载更改其状态并发出事件。
  3. 视图(之前已在商店注册过)收到更改事件通知,导致它从商店获取新状态并自行更改。

这就是区别。而关于 "use same Action Type in dispatch and emit" 这个问题,它真的没有意义,是吗?

我建议你阅读此博客 post - http://blog.andrewray.me/flux-for-stupid-people/(标题无意冒犯 BTW :))

您已经知道这一点,但我再说一遍:A unidirectional data flow 是通量模式的核心。这意味着数据(而非控制)总是单向流动。