Reactjs 如何在redux上正确实现mapDispatchToProps?

Reactjs 如何在redux上正确实现mapDispatchToProps?,reactjs,redux,Reactjs,Redux,我看到了两种实现mapDispatchToProps的方法 第一种方式: function mapDispatchToProps(dispatch) { return { actionMapped: bindActionCreators(courseActions, dispatch) }; } 第二种方式: function mapDispatchToProps(dispatch) { return { actionMapped: () => dispatch( courseA

我看到了两种实现mapDispatchToProps的方法

第一种方式:

function mapDispatchToProps(dispatch) {
  return { actionMapped: bindActionCreators(courseActions, dispatch) };
}
第二种方式:

function mapDispatchToProps(dispatch) {
  return { actionMapped: () => dispatch( courseActions() )};
}

哪一个更有效?是否有任何场景我应该使用特定的场景?其中一种是推荐的吗?

在连接Redux组件时,有几种有效的方法可以绑定动作创建者。以下是一些例子:

    import {action1, action2} from "myActions";
    import {bindActionCreators} from "redux";

    const mapDispatchToProps(dispatch) => {
        return {
            manuallyBoundAction : (...args) => dispatch(action1(...args)),
            autoBoundAction : bindActionCreators(action2, dispatch),
            multipleActionsTogether : bindActionCreators({action1, action2}, dispatch)
        }
    };

    const MyComponent = (props) => {
        return (
            <div>
                <button onClick={props.manuallyBoundAction}>Run First Action</button>
                <button onClick={props.autoBoundAction}>Run Second Action</button>
                <button onClick={props.multipleActionsTogether.action1}>Run Third Action</button>
                <button onClick={props.multipleActionsTogether.action2}>Run Fourth Action</button>
            </div>
        )
    }

    export default connect(null, mapDispatchToProps)(MyComponent);

    // or, you can use the "object shorthand" for mapDispatch:
    export default connect(null, {action1, action2})(SomeOtherComponent)
所有这些最终都会产生一些函数,这些函数包装动作创建者,并在调用时自动将其返回值传递给dispatch

我个人建议使用对象速记法。对我来说,手工编写实际的mapDispatch函数从来都不是一个好理由。

如果courseActions是一个操作对象,那么只需将操作对象作为mapDispatchToProps参数传递给:

如果传递了一个对象,则假定其中的每个函数都是 Redux操作创建者。具有相同函数名但具有 每个action creator都打包到一个分派调用中,以便 直接调用,将合并到组件的道具中

例如:

connect(mapStateToProps, courseActions)
执行相同的操作,但您需要显式地传递dipsatch:

const mapDispatchToProps =(dispatch) => 
    bindActionCreators(courseActions, dispatch)