Javascript Redux mapDispatchToProps声明中的输入顺序
我不明白的是,在这个currying风格的声明中,为什么分派输入是第二个 不连接调用此函数并将分派作为输入,然后将返回值分配给props吗?因此,返回值应该是获取id作为输入并执行某些操作的函数 但是根据我对Curry的理解,应该首先使用id作为输入调用此函数,然后使用dispatch输入调用返回的函数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
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和分派的用途?