2017-02-28 52 views
1

我來自一個Angular2世界,其中有服務可以執行正常的數據加載等,現在我在React,Redux應用程序中,並試圖找出與Angular2服務等效的內容在Redux(React)中。它變回紅色嗎?Redux等效於Angular2服務

回答

3

答案是

  • 角服務必須加載數據,通常返回獲取與加載的數據解決的Promise對象的邏輯。

  • 藉助Redux Thunk中間件,您可以創建異步操作創建器,並將數據加載邏輯放在此處。但不是直接返回一個對象,而是等待數據解析並分派一個動作來更新加載數據的狀態。 React組件通過道具從Redux商店接收數據。 (參見從react-reduxconnect()方法。)

  • 角服務是用於促進與遠程的HTTP服務器的通信提供特定的功能,如$http單身。
  • Redux Thunk是一箇中間件,除了允許您編寫異步操作創建器(可以延遲操作的分派)或僅在滿足特定條件時才分派時,它什麼也不做。動作創建者是創建動作的函數 - 它們不打算提供其他功能,例如與後端服務器的通信。

就這麼說,它通常是編碼風格的地方,你怎麼寫邏輯來加載數據。

您可以使用Fetch API或其polyfill函數或axios庫,兩者都是基於Promise的。你也可以考慮使用Observables,但我認爲它超出了主題。

當您使用Angular服務時,您可以將所有相關邏輯放在一個位置並導出它們。在你的動作創建者中,你可以調用這些包裝器/幫助器,監聽解析/拒絕,並派遣一個適當的動作,並將數據解析爲有效載荷。

您的縮減器在接收到分派的操作後會更新Redux存儲,並將這些狀態更改傳播到React組件。這是Flux體系結構如何工作數據如何從Redux Store流向React組件,AFAIK。

(我可能是錯的,請糾正我,如果事情是不正確的,我願意接受你的意見,我還是上找出落實在陣營應用服務的最佳實踐方式。)

+0

大答案!我唯一要改變的地方就是把它們叫做「包裝/幫手」。我不相信有一個商定的術語,因爲我已經看到他們稱爲包裝,幫手,服務,客戶端,api和其他我不會重複的事情,因爲他們沒有多大意義。 –