在mapDispatchToProps

时间:2017-04-07 18:19:22

标签: reactjs redux react-redux

我有一个提交按钮,可以发送一个动作。操作的有效负载是将发送到API的发布数据。目前我在bindActionCreators中使用mapDispatchToProps

const mapDispatchToProps = (dispatch) => ({
    actions:  bindActionCreators(FormActions, dispatch)
});

然后在我的组件中,我将onClick绑定到提交操作:

<input type="submit" onClick={() => this.props.actions.submit(this.props.postData)} />

我不喜欢我必须在mapStateToProps中为此组件提供帖子数据。我更愿意给组件一个已经将post数据绑定到submit函数的动作,所以它的用法如下所示:

<input type="submit" onClick={this.props.submit} />

这可能吗?我无权访问mapDispatchToProps

中的州

1 个答案:

答案 0 :(得分:5)

connect的{​​{1}}方法中有一个名为mergeProps的第三个参数,它应该用于你刚刚描述过的情况。在您的情况下,您可以执行以下操作:

react-redux

请注意,组件不会只收到const mapStateToProps = state => ({ postData: ... }); const mapDispatchToProps = (dispatch) => ({ actions: bindActionCreators(FormActions, dispatch) }); const mergeProps = (stateProps, dispatchProps) => ({ submit: () => dispatchProps.actions.submit(stateProps.postData), }); const ConnectedComponent = connect(mapStateToProps, mapDispatchToProps, mergeProps)(Component); 也不会收到actions,只会收到postData