Javascript Redux mapDispatchToProps声明中的输入顺序

Javascript Redux mapDispatchToProps声明中的输入顺序,javascript,redux,react-redux,Javascript,Redux,React Redux,我不明白的是,在这个currying风格的声明中,为什么分派输入是第二个 不连接调用此函数并将分派作为输入,然后将返回值分配给props吗?因此,返回值应该是获取id作为输入并执行某些操作的函数 但是根据我对Curry的理解,应该首先使用id作为输入调用此函数,然后使用dispatch输入调用返回的函数 export const mapDispatchToProps = id => dispatch => { //e.g. dispatch an action that de

我不明白的是,在这个currying风格的声明中,为什么分派输入是第二个

不连接调用此函数并将分派作为输入,然后将返回值分配给props吗?因此,返回值应该是获取id作为输入并执行某些操作的函数

但是根据我对Curry的理解,应该首先使用id作为输入调用此函数,然后使用dispatch输入调用返回的函数

export const mapDispatchToProps = id => dispatch => {
    //e.g. dispatch an action that deletes that id
};
那么为什么这个函数正确呢?

如果正确的话

connect(null, mapDispatchToProps)(Component1)
这是行不通的

截至,

mapDispatchToProps参数可以有两种形式。函数形式允许更多的定制,而对象形式则易于使用

  • 函数形式:允许更多的定制,获得分派和可选拥有道具的权限
  • 对象速记形式:更具声明性且更易于使用
函数窗体应该返回对象,但是您的
mapDispatchToProps
返回一个函数,因此它将被忽略

我想当Redux与Redux thunk一起使用时,您会将此函数视为动作创建者。这样它就可以工作了,但是它应该像下面这样作为对象属性传递
connect(null,{mapDispatchToProps})(Component1)
。这样,它将可用于
组件1

在内部,
连接
执行以下操作

  • 如果您将函数作为
    mapDispatchToProps
    传递,它将以
    dispatch
    作为第一个参数进行调用。而
    connect
    期望对象作为结果合并到道具

    mapDispatchToProps
    可以按如下方式实现

     mapDispatchToProps = dispatch => ({
         changeID (id) {
             return dispatch => /* some code */
         }
     })
    
    组件将收到
    changeID
    功能作为道具。此函数只能与Redux thunk一起使用。当组件调用
    changeID
    时,Redux将把它传递给Redux thunk,Redux thunk反过来调用内部函数,并将
    dispatch
    作为第一个参数提供

  • 如果将对象作为
    mapDispatchToProps
    传递,则此对象的所有道具都将成为组件道具的一部分

    mapDispatchToProps = {
        changeID (id) {
            return dispatch => /* some code */
        }
    }
    
    从本质上讲,它的工作原理与第1点的代码相同

  • 所以主要的想法是,任何带有签名的函数

    const SomeFunc = id => dispatch => { /* code */ }
    
    只能与Redux thunk一起使用。Redux thunk将调用内部函数,提供
    dispatch
    作为第一个参数

    没有Redux thunk,只允许以下动作创建者

    const SomeFunc = id => ({ type: 'ACTION', id })
    

    它们只是动作的创造者。

    mapDispatchToProps在这里到底做什么?您能否提供更多的代码,以便更好地了解id和分派的用途?