Redux的applyMiddleware的实现
The implementation of Redux's applyMiddleware
我的问题是为什么 middlewareAPI
不能使用 :
const middlewareAPI = {
getState: store.getState,
dispatch: dispatch
}
替换源码中的定义如下:
export default function applyMiddleware(...middlewares) {
return (createStore) => (reducer, preloadedState, enhancer) => {
const store = createStore(reducer, preloadedState, enhancer)
let dispatch = store.dispatch
let chain = []
const middlewareAPI = {
getState: store.getState,
dispatch: (...args) => dispatch(...args) // why not just use `dispatch: dispatch`
}
chain = middlewares.map(middleware => middleware(middlewareAPI))
dispatch = compose(...chain)(store.dispatch)
return {
...store,
dispatch
}
}
}
谁能告诉我区别?谢谢
有点复杂的JS变量组合scoping/hosting,需要保证传入的dispatch方法实际指向中间件链的开始
请查看新增(尚未发布)Redux FAQ entry on why applyMiddleware
uses a closure了解更多详情。
我的问题是为什么 middlewareAPI
不能使用 :
const middlewareAPI = {
getState: store.getState,
dispatch: dispatch
}
替换源码中的定义如下:
export default function applyMiddleware(...middlewares) {
return (createStore) => (reducer, preloadedState, enhancer) => {
const store = createStore(reducer, preloadedState, enhancer)
let dispatch = store.dispatch
let chain = []
const middlewareAPI = {
getState: store.getState,
dispatch: (...args) => dispatch(...args) // why not just use `dispatch: dispatch`
}
chain = middlewares.map(middleware => middleware(middlewareAPI))
dispatch = compose(...chain)(store.dispatch)
return {
...store,
dispatch
}
}
}
谁能告诉我区别?谢谢
有点复杂的JS变量组合scoping/hosting,需要保证传入的dispatch方法实际指向中间件链的开始
请查看新增(尚未发布)Redux FAQ entry on why applyMiddleware
uses a closure了解更多详情。