当前位置 : 主页 > 网页制作 > React >

reactjs – mapDispatchToProps和matchDispatchToProps之间有什么区别

来源:互联网 收集:自由互联 发布时间:2021-06-15
标题解释了这些问题. 我正在使用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.这完全没有效果.

网友评论