我有一个提交按钮,可以发送一个动作。操作的有效负载是将发送到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
答案 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
。