2017-09-06 160 views
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 
    } 
    } 
} 

任何人都可以告訴我有什麼區別?謝謝。

+0

通過執行第一個代碼是否得到任何錯誤? –

+0

如果在中間件中使用'dispatch','dispatch'指向原始的'store.dispatch',而不是使用中間件鏈調度'dispatch'。這就是爲什麼它使用閉包來指向變量調度。 –

回答