我脑子里有这个问题,不确定这是否有效,下面是redux中间控制台退出商店的一个例子。
const logger = store => next => action => {
console.log('dispatching', action)
let result = next(action)
console.log('next state', store.getState())
return result
}
我可以看到它使用 currying ,因此在redux中调用logger(store)(store.dispatch)(action)
(如果我错了,请纠正我)。我的问题是为什么我们在这里讨论而不是
(store, next, action) => { // do the rest }
感谢您的任何建议,我正在慢慢进入函数式编程,以便让我的节奏更快。
答案 0 :(得分:1)
我认为redux希望为开发人员提供三个钩子。
我们可以将调用链logger(store)(next)(action)
拆分为
let haveStoreAndDispatch = logger(store);
let haveNext = haveStoreAndDispatch(next);
let haveAction = haveNext(action);
然后我们得到三个钩子函数。
在haveStoreAndDispatch
回调函数中,已创建商店
在haveNext
回调函数中,我们获得了下一个中间件
在HaveAction
回调函数中,我们可以使用之前的中间件的结果action
执行某些操作。
回调haveStoreAndDispatch
和haveNext
只能在applyMiddleware(...middlewares)(createStore)
中调用一次。