2016-07-27 49 views
14

在我的react/redux應用程序中,我經常希望將多個動作分派到另一個動作。如何一個接一個地發送多個動作

給出以下示例:成功登錄後,我想存儲用戶數據並在此之後我想啓動另一個從服務器加載應用程序配置的異步操作。

我知道,我可以使用redux-thunk建立一個行動的創建者這樣

function loginRequestSuccess(data) { 
    return function(dispatch) { 
    dispatch(saveUserData(data.user)) 
    dispatch(loadConfig()) 
    } 
} 

所以我的問題是:

  1. 當第一dispatch回報,已經是所有減速改變狀態聆聽那個動作?我想知道這兩個調度是否嚴格順序運行。
  2. 此方法是否考慮調度多個操作的最佳做​​法?如果不是,你會建議什麼呢?

感謝您的幫助!

+0

我看過REDX傳奇,基於發電機/產量,可能適合你想要的。初看起來可能很難,但如果你想控制順序或並行的內容,試試這個http://yelouafi.github.io/redux-saga/docs/advanced/SequencingSagas.html –

+0

順序和同步,ReactJS將批量更新並異步運行其更新(渲染等),所以你可能只會得到一個渲染。請參閱https://github.com/reactjs/react-redux/issues/291 –

回答

9

是的,redux-thunk可以讓你按照自己的意思去做,而且這是分派多個動作的最佳實踐(因爲它很簡單,我更喜歡這個動作)。狀態確實會在您發送後立即更新(到它返回的時候),這就是爲什麼給您一個函數來檢索thunk中的狀態,而不是簡單地引用狀態。通過這種方式,您可以使用一次調度來更改狀態,然後調用getState()以獲取需要讀取的新狀態的引用。

+0

之前,請您分享一下實現或鏈接到相同的任何相關文章。 –

+0

它看起來像這裏有一些例子:https://gist.github.com/markerikson/ea4d0a6ce56ee479fe8b356e099f857e否則對於一篇文章,它看起來像有人在這裏寫了一些關於它的:https://codepen.io/stowball/post/a -dummy-S-引導到終極版和 - 形實轉換功能於反應 – John

2

redux-thunk正是你在找的東西。我認爲這是非常好的做法。

要回答你的問題,事實上當第一次調度返回狀態已經被調用reducer改變了。

+0

是的,redux-thunk適合調度多個操作,但不能保證所有操作都是順序的,不是嗎? –

+3

在同一個調度程序中,所有操作都是順序的。在上述情況中,'saveUserData'總是在'loadConfig' – mguijarr

相關問題