0
我的問題的實施是爲什麼middlewareAPI
不能使用:終極版的applyMiddleware
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
}
}
}
任何人都可以告訴我有什麼區別?謝謝。
通過執行第一個代碼是否得到任何錯誤? –
如果在中間件中使用'dispatch','dispatch'指向原始的'store.dispatch',而不是使用中間件鏈調度'dispatch'。這就是爲什麼它使用閉包來指向變量調度。 –