我正在重構我的應用程序以使用redux
,這很好。如何在多個redux減速器中同時觸發單個初始動作?
我想要做的一件事就是在開始時分派一個初始動作,每個reducer都會設法在那個時候初始化自己。
比方說,我有創造的店,路線等在該文件中的main.js
,我可以這樣做:
store.dispatch({ type: 'app/init' });
如果我這樣做,動作類型app/init
可以在每個減速攔截需要自行初始化。
一個例子用例(其中包括)
當應用程序啓動時,第三方庫一定要來看望如果用戶當前被驗證。如果是這樣,則必須使用該用戶數據觸發LOGIN_SUCCESS
操作。
我想看到這個代碼與身份驗證縮減器在同一個文件中,由全局init動作(這意味着商店被創建)觸發。
問題
在減速(其中初始化動作管理),其他動作不能出動。
實施操作的建議方式是定義動作創建者,這確實很乾淨,並讓我們使用中間件thunks
來發送其他動作。
我可以用init()
行動的創作者爲每個減速器(我定義在同一個「鴨」相關的行動和減速器文件),但是這意味着進口/調用他們每個人在main.js
,這正是我試圖避免直接調度行動。
如何通過一個app/init
動作派出並能夠在每個存儲中攔截它併發送其他操作來獲得最好的世界?
注:我只是在每個reducer中實現這些初始化代碼,內聯,但我沒有這樣的標準訪問調度器?
您是否試圖在開始階段填充狀態? –
每個減速器中已經定義了初始狀態。然後,根據該初始狀態,需要發送其他操作。有點像一個初始thunk ...我想在所有需要它的減速器攔截的單個發送中分組。 – Pandaiolo
'createStore'將'initialState'作爲一個可選參數。如果你只是想設置整個應用程序的初始狀態,這是值得檢查。這比被激發的一組初始動作更可取。 –