簡體   English   中英

Redux與Angular 2中的服務

[英]Redux vs services in Angular 2

我想確保我理解Redux是對的。 我的理解是它將存儲應用程序的完整狀態(包括所有子系統),如所有組件的模型以及獲取的數據和用戶生成的數據的緩存。 這是否意味着我永遠不應該使用服務來加載/保存組件的狀態?

我正在制作一個測驗應用程序,它包括測驗類別問題選擇等組件 目前,每個組件都調用Web API來獲取數據並維護它自己的狀態,或者借助於通過id字段跟蹤所有內容的服務。

我有一個名為AnswerService的專用服務來維護所選選項的狀態,其中每個Choice組件在呈現時獲取它的狀態。

遷移到Redux意味着所有這些都將被移動到存儲,幾乎所有服務都將是無狀態並直接發送到商店,並且所有組件模型都分別從商店訂閱?

“遷移到Redux意味着所有這些都將轉移到存儲”

沒有。
如果您正在使用ngrx,那么處理此問題的最佳方法是使用ngrx / effects。 這是一個伴侶庫,意思是“放置異步代碼的地方”,換句話說就是做副作用的地方。 因此,當組件需要一些新數據時,它會調度“GET_DATA”動作,這將作為ngrx @Effect處理。 在您的效果內部,您可以使用自定義服務來調用和檢索數據(因此您的異步服務可能很好,可能只需要稍微調整一下)。 然后,效果將包含新數據的操作返回到reducer,后者使用新數據更新狀態。 您的組件訂閱了整個存儲的時間,因此當reducer更新狀態時,組件知道此更改並可以自動更新它自己的本地狀態。

謝謝你的提問。 我面臨同樣的困境。 我現在回答自己的方式是,我仍然會有可測試的服務來封裝“redux”函數執行的狀態更改操作。 在我看來,你在基本的redux例子中看到的帶有巨大if語句的redux函數只是一個開始......我想沒有人會在一個大應用程序中編寫那樣的真實代碼......但是,我會說,讓這個redux中介捕獲並將任何狀態改變事件發送到相應的服務看起來是個好主意。 我們還不確定是否還要將只讀的內容封裝在服務中......也許不是......但這將是另一個討論。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM