Reactjs 为什么我可以在没有mapDispatchToProps的情况下调用我的动作创建者?

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

有人能解释一下为什么下面的代码能够访问mysubmistation操作创建者,而不使用包含mapDispatchToProps()的?我知道handleSubmit()是由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));
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中,而不是将逻辑放入组件中。