0

如果 Redux 操作实际上并不作用于数据,而只是返回一个有效负载,为什么它们被称为操作?

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

这只是未来证明应用程序可与多个商店一起使用的一种方式吗?

这也产生了对 mapDispatchToProps 的需求,它通常是完整的样板代码,用于包装带有调度调用的操作

它通常可以用这个函数来概括,它接受一个动作对象并返回一个 mapDispatchToProps 函数

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

Object.mapEntries示例。

编辑

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

4

1 回答 1

5

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

这里的命名是因为 Redux 最初是“Flux 架构”的实现,而Flux 将“动作”定义为“带有type字段的简单对象”。是否将它们命名为“动作”或“事件”的问题引起了激烈的争论,结论是继续使用 Flux 术语,因为这是现有 Flux 用户最熟悉的术语。

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

有关历史细节,请参阅以下 Redux 问题中的讨论:

是的,我们强烈鼓励mapDispatch人们使用.

于 2019-08-20T19:15:52.960 回答