【问题标题】:Difference between dispatch and emit in Flux/React NativeFlux/React Native 中 dispatch 和 emit 的区别
【发布时间】:2016-09-17 04:47:17
【问题描述】:

我是 Flux/React Native 的新手。

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

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

例如:

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

【问题讨论】:

    标签: flux reactjs-flux


    【解决方案1】:

    在 Flux 中,事件 由商店发出,指示其状态发生变化。视图会监听此“更改”事件。这将提示视图从存储中获取新状态。请注意,该事件从不包含有关新状态的有效负载/信息。它实际上就是它所读到的 - 一个事件。

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

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

    动作是从视图中“分派”的,商店通过可能更改其状态并发出“更改”事件来响应分派。

    所以基本上:

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

    所以这就是区别。关于“在 dispatch 和 emit 中使用相同的 Action Type”这个问题,它真的没有意义,不是吗?

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-29
      • 1970-01-01
      • 2018-11-17
      • 2017-12-22
      • 1970-01-01
      • 1970-01-01
      • 2013-07-09
      相关资源
      最近更新 更多