2017-08-30 24 views
6

redux docs中給出的例子中,總是似乎有東西從中間件返回。但是,當我撥打next(action)並返回沒有任何東西似乎工作正常。我是否總是需要從redux中間件返回一個值?

redux source它似乎是調用dispatch每個中間件的返回值。

這使我相信它提供了一個可選的方法來在所有中間件運行後運行調度。

有人可以確認我們是否必須始終從中間件返回一個值,如果是的話,爲什麼?

回答

8

我其實tweeted about this just the other day

store.dispatch()方法默認返回傳入的操作。由於中間件管道繞過dispatch(),因此每個中間件都可以更改正在傳入的管道中的值,並更改傳回的返回值。

許多中間件都依賴於能夠自己返回值或使用返回值。例如,redux-thunk返回您從thunk函數返回的任何內容,這通常用於從thunk中返回承諾,以便鏈接dispatch(somePromiseThunk()).then(() => {})

如果中間件調用next(action)但實際上並沒有從next()返回值,它可能會破壞這些功能。具體行爲將取決於您設置的中間件以及訂購方式。

正因爲如此,「正確」的做法是,每中間件Redux的應該return next(action)在默認情況下,除非明確規定要改變返回值的行爲。這確保了最好的兼容性和組合中間件的能力。

相關問題