关于文章中applyMiddleware(...middlewares)的问题
zaleGZL opened this issue · comments
/* 降低逼格写法 */
function printStateMiddleware(middlewareAPI) { // 记为【锚点-1】,中间件内可用的 API
return function (dispatch) { // 记为【锚点-2】,传入上级中间件处理逻辑(若无则为原 store.dispatch)
// 下面记为【锚点-3】,整个函数将会被传到下级中间件(如果有的话)作为它的 dispatch 参数
return function (action) { // <---------------------------------------------- 这货就叫做【中间件处理逻辑哥】吧
console.log('state before dispatch', middlewareAPI.getState())
var returnValue = dispatch(action) // 还记得吗,dispatch 的返回值其实还是 action
console.log('state after dispatch', middlewareAPI.getState())
return returnValue // 继续传给下一个中间件作为参数 action 我感觉你这句话解释有问题
}
}
}
下一个中间件的action在这里是通过dispatch(action)传递的吧,(也就是next(action)),感觉这里有问题。
return returnValue // 继续传给下一个中间件作为参数 action 我感觉你这句话解释有问题
我觉得可以这样修改为:
/* 降低逼格写法 */
function printStateMiddleware(middlewareAPI) { // 记为【锚点-1】,中间件内可用的 API
return function (dispatch) { // 记为【锚点-2】,传入上级中间件处理逻辑(若无则为原 store.dispatch)
// 下面记为【锚点-3】,整个函数将会被传到下级中间件(如果有的话)作为它的 dispatch 参数
return function (action) { // <---------------------------------------------- 这货就叫做【中间件处理逻辑哥】吧
console.log('state before dispatch', middlewareAPI.getState())
var returnValue = dispatch(action)
// 还记得吗,dispatch 的返回值其实还是 action
// 这里调用 dispatch 将 action 传递到下一个中间件,并且返回 action
console.log('state after dispatch', middlewareAPI.getState())
return returnValue // 将action返回给上一个中间件
}
}
}
感谢!