如果Redux动作实际上没有执行任何动作(IE调度),为什么将它们称为动作

时间:2019-08-20 18:54:17

标签: redux react-redux redux-actions

如果Redux动作实际上不对数据起作用,而只是返回有效负载,为什么将它们称为动作?

除了要调度的动作以外,还有其他用途吗?为什么在调用时不调度动作?

这仅仅是将来验证应用程序可与多个商店一起使用的一种方法吗?

这也需要mapDispatchToProps,通常这完全是样板代码,可以用分派调用包装动作

此功能通常可以概括为采取行动的对象 并返回mapDispatchToProps函数

// mapActionsToDispatchProps.js
const mapActionsToDispatchProps = actions => {
  return dispatch => (
    actions.mapEntries(action => (
      (...args) => dispatch(action(...args))
    )
  )
)
export default mapActionsToDispatchProps

Object.mapEntries示例。

编辑

我看到关于mapDispachToProps主要是样板的最后一个问题可以通过直接传递动作对象来避免,而connect会为我映射它们。

1 个答案:

答案 0 :(得分:4)

请注意,动作只是具有type字段的普通对象,而动作创建者是返回动作对象的函数。

此处的命名是因为Redux最初是"Flux Architecture"Flux defines "actions" as "simple objects with a type field"的实现。是否将其命名为“动作”或“事件”的问题引起了激烈的争论,结论是继续使用Flux术语,因为这是现有Flux用户最熟悉的术语。

现在,当然,没有人记得其他Flux库是否存在,许多人认为“动作”一词是Redux团队在某个时候发明的。

有关历史记录的详细信息,请参阅以下Redux问题中的讨论:

是的,我们强烈鼓励人们使用the "object shorthand" form of mapDispatch