为什么选择Curry Redux中间件:state => next => action {} vs.(state,next)=>行动{}

时间:2017-10-13 12:38:02

标签: javascript redux middleware

在中间件上阅读Redux's documentation和在applyMiddleware上阅读source code后,我不明白为什么中间件需要咖喱语法:

const logger = store => next => action => {
  console.log('dispatching', action)
  let result = next(action)
  console.log('next state', store.getState())
  return result
}

无法通过

实现同样的目标
const logger = (store, next) => action => {
  console.log('dispatching', action)
  let result = next(action)
  console.log('next state', store.getState())
  return result
}

applyMiddleware中进行撰写调用:

dispatch = compose(...middleware)(middlewareAPI , store.dispatch)

2 个答案:

答案 0 :(得分:1)

可以找到与Dan Abramov的讨论here。他说,

  

我们本可以做到(商店,下一个)=> action => ()但我没有看到   只是一路走来的问题。您可能需要一些配置   之后,选项=> (商店,下一个)=> action => ()看起来   有点武断。

所以不,没有必要讨论参数。

答案 1 :(得分:0)

不,因为它是一种推迟稍后执行的功能的方法。 ()=>()返回一个函数对象,该函数对象仅在稍后调用func obj时执行。