在使用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
只是一个行动创造者,那么调度的方式和地点如何?
答案 0 :(得分:1)
[mapDispatchToProps(dispatch,[ownProps]):dispatchProps](对象或函数):如果传递了一个对象,则假定其中的每个函数都是Redux操作创建者。一个具有相同功能名称的对象,但是每个动作创建者都被包装到一个调度调用中,以便可以直接调用它们,这些对象将被合并到组件的props中。
您也可以关注the source code。您可以在其中查看实施细节。