Reactjs 为什么我可以在没有mapDispatchToProps的情况下调用我的动作创建者?
有人能解释一下为什么下面的代码能够访问mysubmistation操作创建者,而不使用包含mapDispatchToProps()的?我知道handleSubmit()是由reduxForm()装饰器作为道具提供的,但我的自定义动作创建者在哪里传递Reactjs 为什么我可以在没有mapDispatchToProps的情况下调用我的动作创建者?,reactjs,react-redux,redux-form,Reactjs,React Redux,Redux Form,有人能解释一下为什么下面的代码能够访问mysubmistation操作创建者,而不使用包含mapDispatchToProps()的?我知道handleSubmit()是由reduxForm()装饰器作为道具提供的,但我的自定义动作创建者在哪里传递 import React, { Component } from 'react'; import { Field, reduxForm } from 'redux-form'; import { connect } from 'react-redux
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));
import React,{Component}来自'React';
从“redux form”导入{Field,reduxForm};
从'react redux'导入{connect};
将*作为动作从“../Actions”导入;
常量验证=值=>{
常量错误={};
如果(!values.title){
errors.title=“请输入标题”
}
返回错误;
};
类myForm扩展组件{
handleFormSubmit=(值)=>{
this.props.mysubmitation(值);
};
render(){
返回(
isOpen={this.props.modalIsOpen}
onRequestClose={()=>this.props.onRequestClose()}>
提交
)
}
}
const createReduxForm=reduxForm({form:'myForm',validate});
导出默认连接(null,Actions)(createReduxForm(SessionForm));
从“../Actions导入*作为动作时,动作
是动作名称和动作创建者的对象映射。当您将对象作为mapDispatchToProps
参数传递时,connect
默认情况下会将每个动作创建者包装到dispatch
调用中
看
[mapDispatchToProps(dispatch,[ownProps]):dispatchProps](对象或函数):如果传递了对象,则假定其中的每个函数都是Redux操作创建者。一个具有相同函数名的对象,但每个动作创建者都封装在一个分派调用中,因此可以直接调用它们,将合并到组件的props中
好的,我想我明白了。但是,当我可以直接将Actions对象传递给connect()时,为什么要使用mapDispatchToProps呢?有时,您只想将action creators的子集公开给组件,您可能想向action creators注入默认参数,或者有条件地选择action creators。其思想是,您可以将操作封装在mapDispatchToProps中,而不是将逻辑放入组件中。