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' 事件来响应调度。
所以基本上:
- 视图通过调度程序调度带有负载的操作(通常是由于用户交互)
- 商店(之前已向调度员注册)
收到操作通知并使用有效负载更改其状态并发出事件。
- 视图(之前已在商店注册过)收到更改事件通知,导致它从商店获取新状态并自行更改。
这就是区别。而关于 "use same Action Type in dispatch and emit" 这个问题,它真的没有意义,是吗?
我建议你阅读此博客 post - http://blog.andrewray.me/flux-for-stupid-people/(标题无意冒犯 BTW :))
您已经知道这一点,但我再说一遍:A unidirectional data flow 是通量模式的核心。这意味着数据(而非控制)总是单向流动。
我是 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' 事件来响应调度。
所以基本上:
- 视图通过调度程序调度带有负载的操作(通常是由于用户交互)
- 商店(之前已向调度员注册)
收到操作通知并使用有效负载更改其状态并发出事件。 - 视图(之前已在商店注册过)收到更改事件通知,导致它从商店获取新状态并自行更改。
这就是区别。而关于 "use same Action Type in dispatch and emit" 这个问题,它真的没有意义,是吗?
我建议你阅读此博客 post - http://blog.andrewray.me/flux-for-stupid-people/(标题无意冒犯 BTW :))
您已经知道这一点,但我再说一遍:A unidirectional data flow 是通量模式的核心。这意味着数据(而非控制)总是单向流动。