2017-01-13 41 views
0

我正在開發一個具有幾個狀態(reducer)的應用程序。假設他們是消息,喜歡,評論(所有這些都來自完全不同的實例,所以我不確定我是否應該將它們組合成一個狀態)。Redux store的架構問題

每隔30秒,我向服務器發出請求,並收到說明我的應用程序的哪些部分已更新的響應。例如。我收到了新消息或新評論。

我真的不知道如何處理這些反應。首先,我可以簡單地讓容器更新所有其他狀態,但我認爲這不是一個好主意,因爲每個容器都應該有它自己的狀態。第二,我可以創建一箇中間件,它可以捕獲每個動作,找到具有所需信息的中間件並拍攝另一個動作(例如新消息)。在這之後,消息的縮減器將會捕獲這個動作。但我不能確定,如果這是一個正確的方法有兩個原因:

  1. 是否可以從中間件鏡頭操作(它不是一個雙向流動)?
  2. 我怎樣才能真正做到這一點?

在此先感謝。

UPD。我使用中間件做了它,但我仍然不確定這是否是正確的方法。在我的中間件中,我使用store.getState()獲得所需的數據...然後我創建了store.dispatch(myAction)。好嗎?

回答

1

瞭解reducer/=狀態很重要。 (減速器不等狀態)

您應該有一個狀態,一個商店爲您的應用程序。使用combineReducers以及..結合減速器,以保持一切在一個狀態。

http://redux.js.org/docs/api/combineReducers.html

您需要處理異步行爲,這事不是由終極版默認,因此你必須使用某種類型的中間件 - 這意味着你在正確的軌道上。

嘗試使用更常見曾經這樣: https://github.com/gaearon/redux-thunk https://github.com/redux-saga/redux-saga

它建議異步邏輯從你的應用程序中分離出來。這意味着您需要在應用程序中啓動異步調用,但在商店中保留異步邏輯。

這裏的丹阿布拉莫夫和終極版,咚的指南是簡單而明確: http://redux.js.org/docs/advanced/AsyncActions.html

希望它回答你。