react-redux:当mapDispatchToProps是object时,调度动作如何工作?

时间:2018-07-10 03:52:43

标签: redux react-redux

在使用react-redux的过程中,我遇到了一个关于mapDispatchToProps的令人困惑的观点,即它是一个对象而不是函数。

例如,在我的项目中,我有以下动作创建者:

export const incrementBy2 = () => ({
  type: INCREMENT_REQUESTED_2,
})

然后在我的组件中导入动作创建者,并将其设置为mapDispatchToProps:

import { incrementBy2 } from '../actions'
import { connect } from 'react-redux'

// define the Home component, omit the details
const Home = props => ()

// omit the details
const mapStateToProps = state => ()

const mapDispatchToProps = {
  incrementBy2
}

export default connect(
  mapStateToProps,
  mapDispatchToProps
)(Home)

然后在组件中,我可以以props.incrementBy2的身份访问操作创建者,它在我的项目中也很好用。

我的困惑点incrementBy2只是一个行动创造者,那么调度的方式和地点如何?

1 个答案:

答案 0 :(得分:1)

根据the official docs

  

[mapDispatchToProps(dispatch,[ownProps]):dispatchProps](对象或函数):如果传递了一个对象,则假定其中的每个函数都是Redux操作创建者。一个具有相同功能名称的对象,但是每个动作创建者都被包装到一个调度调用中,以便可以直接调用它们,这些对象将被合并到组件的props中。

您也可以关注the source code。您可以在其中查看实施细节。