有人可以帮助解释为什么以下代码能够访问 mySubmitAction 操作创建者而不包含包括mapDispatchToProps()吗?我知道handleDubmit()是由reduxForm()装饰器提供的,但我的自定义动作创建者在哪里被传入?
import React, { Component } from 'react';
import { Field, reduxForm } from 'redux-form';
import { connect } from 'react-redux';
import * as Actions from '../actions';
const validate = values => {
const errors = {};
if (!values.title) {
errors.title = "Please enter a title"
}
return errors;
};
class myForm extends Component {
handleFormSubmit = (values) => {
this.props.mySubmitAction(values);
};
render() {
return (
isOpen={ this.props.modalIsOpen }
onRequestClose={ () => this.props.onRequestClose() }>
<form onSubmit={this.props.handleSubmit(this.handleFormSubmit)}>
<input name="title" className="form-control" type="text" />
<button action="submit" className="btn btn-primary">Submit</button>
</form>
)
}
}
const createReduxForm = reduxForm({form: 'myForm', validate});
export default connect(null, Actions)(createReduxForm(SessionForm));
答案 0 :(得分:1)
当您import * as Actions from '../actions
时,Actions
是您的操作名称和操作创建者的对象映射。当您将对象作为mapDispatchToProps
参数传递时,connect
默认情况下会将每个操作创建者包装成dispatch
个调用。
[mapDispatchToProps(dispatch,[ownProps]):dispatchProps](对象或函数):如果传递了一个对象,则假定其中的每个函数都是一个Redux动作创建者。具有相同函数名称的对象,但每个动作创建者都包含在一个调度调用中,因此可以直接调用它们,它们将合并到组件的道具中。