我有一個帶頁面調查的REDX應用程序。爲了更改頁面,我有一個NAVIGATION_NEXT_PAGE動作。 Reducers然後處理商店中新頁面的創建。我有許多其他操作可以設置問題答案,甚至可以瀏覽頁面。在通過NAVIGATION_NEXT_PAGE顯示的每個新頁面中,我都有一個用戶定義的操作列表,當頁面第一次顯示時以及回答問題時,這些操作將被執行。如何從其他操作的結果中排列操作
我的問題是如何在每次顯示新頁面時遞歸地分配動作,同時仍然將動作邏輯與組件分離。我不想在我的PageContainer中發送操作,因爲如果操作要求跳過它,我不希望顯示該頁面。
這是我目前的解決方案:
const actionMiddleware = (store) => (next) => (action) => {
// Execute post answer actions on the current page.
switch (action.type) {
case types.NAVIGATION_NEXT_PAGE:
for (let postAnswerAction of store.getState().postAnswerActions);
next(store.dispatch(actionFromPageAction(postAnswerAction)))
break;
}
// Evaluate the action.
let result = next(action);
// Execute the preload actions of the new page.
switch (action.type) {
case types.NAVIGATION_NEXT_PAGE:
for (let preLoadAction of store.getState().preLoadActions);
next(store.dispatch(actionFromPageAction(preLoadAction)))
break;
}
return result;
};
但它引入怪異的行爲,有時反應不更新我的UI。也許我的中間件打破了react-redux?
我在正確的軌道上。什麼是從我的中間件派遣操作的正確方式?
如果你不反對檢出另一個庫,那麼[redux-observable](https://github.com/redux-observable/redux-observable)完全可以加上rxjs'Observables'的強大功能。它基本上將你的行爲封裝成一個'Observable'流,你可以在他們稱爲史詩的函數中對它們進行轉換。你也不需要添加一箇中間件,據我所知,它應該在更通用的層面上運行。 –
由於我不需要異步功能,是否有替代方案不依賴於RxJS?爲了限制依賴性。 –
下面添加了一個答案,請仔細閱讀。在店裏保持行動似乎並不是一個好的做法。 –