2017-10-16 104 views
2

在我的redux項目中,我想在每個動作分派中檢查一些東西(例如網絡連接)。我應該實現使用它接受所有類型的動作(沒有類型檢查)減速低於Redux中間件和Reducer接受所有動作的區別

export default (state = defaultState) => ({ 
    ...state, 
    neworkStatus: navigator.onLine 
}) 

或中間件給出。

const NetworkMiddleware = store => next => (action) => { 
    const result = next(action) 
    const state = store.getState() 
    if (navigator.onLine && !state.NetworkDetector.networkStatus) next({ type: 'NETWORK_SUCCESS' }) 
    if (!navigator.onLine && state.NetworkDetector.networkStatus) next({ type: 'NETWORK_ERROR' }) 
    return result 
} 

export default NetworkMiddleware; 

的是這兩種實現

回答

3

它提供分派 動作之間的第三方擴展點,瞬間到達減速機之間的差異。人們使用Redux 中間件進行日誌記錄,崩潰報告,與異步 API交談,路由等。

我認爲使用中間件來分析網絡活動會更好。請閱讀這些Redux docs瞭解更多信息。

0

redux中的中間件攔截動作並執行一些特定的活動,然後它進入reducer來更新狀態。中間件旨在執行此類操作,而不會對商店中的狀態進行更改。如果通過編寫reducer來執行此類跟蹤或修改,則最終會在商店中維護此活動的狀態,這可能與組件更新或重新渲染無關。我認爲這不是一個好的做法,並且不按照框架設計進行。所以最好通過使用中間件來實現它。

相關問題