标题解释了这些问题. 我正在使用redux将用户状态更改为活动或活跃用户. 在matchDispatchToProps中: function matchDispatchToProps(dispatch){ return bindActionCreators({selectUser: selectUser}, dispatch);} 如果是
我正在使用redux将用户状态更改为活动或活跃用户.
在matchDispatchToProps中:
function matchDispatchToProps(dispatch){ return bindActionCreators({selectUser: selectUser}, dispatch); }
如果是mapDispatchToProps:
const mapDispatchToProps = (dispatch) => ({ dispatch({selectUser: selectUser}) })
请解释一下这些之间的区别.
这里有两件事.首先,connect()的第二个参数的正确名称称为mapDispatchToProps.它也经常被称为mapDispatch.但是,就像JS中的任何函数调用一样,调用变量也无关紧要 – 您可以调用函数mapDispatchToProps,mapDispatch,fred或someFunctionName. (那就是说,我不知道为什么你叫它matchDispatchToProps,或者你听到那个名字.)
其次,你的两个示例函数有很大的不同. mapDispatch函数的目的是返回一个对象,该对象中的每个键/值将成为该组件的prop.通常,您将在该对象内返回绑定动作创建函数,以便该组件将接收像this.props.doSomeWork()这样的道具.您的第一个示例,它确实返回bindActionCreators({selectUser},dispatch),将正确地执行此操作.
您的第二个示例似乎不是有效的JS语法:
const mapDispatchToProps = (dispatch) => ({ dispatch({selectUser: selectUser}) })
我们有一个箭头函数可以立即返回一个对象,但它不是在对象中声明键/值对,而是试图立即调用dispatch.这完全没有效果.