【问题标题】:Why are Redux actions called actions if they don't actually perform any action (I.E. dispatch)如果 Redux 操作实际上不执行任何操作(即调度),为什么它们称为操作
【发布时间】:2019-08-20 18:54:17
【问题描述】:

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

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

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

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

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

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

Object.mapEntries 示例。

编辑

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

【问题讨论】:

    标签: redux react-redux redux-actions


    【解决方案1】:

    请注意,action 只是一个带有 type 字段的普通对象,而 action creator 是一个返回 action 对象的函数。

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-22
      • 1970-01-01
      • 2020-07-11
      • 2018-05-13
      • 1970-01-01
      • 1970-01-01
      • 2020-04-19
      • 1970-01-01
      相关资源
      最近更新 更多