2017-08-26 74 views
0

即使要處理的數據不在不同組件之間共享,我是否應該使用Redux進行所有API調用? 示例:用戶列表組件必須檢索用戶列表並將其顯示在界面中。這些用戶不在該組件之外使用。 API調用是否必須通過actions/redurs/effects來實現?如何實現Redux?

+0

結帳示例應用程序https://github.com/ngrx/platform/blob/master/example-app/README.md查看工作原理 – Kuncevic

回答

-1

這取決於你的課程目標。如果你只想嘗試Angular,那不是你的選擇。如果你計劃你的應用會增長 - 這不是個壞主意。實際上,如果您將使用「按功能模塊」結構,您可以輕鬆地將ngrx添加到您的項目中。

Redux是關於國家管理。也許你認爲現在是過度殺傷力。但請確保您的應用會增長。您將獲得更多模塊,處理所有事情將會更加困難。

此外,REDX還爲您的應用程序添加了一些結構。我相信如果新人加入了團隊,如果團隊使用了redux,那麼新人將會輕鬆地開展項目。即使他們是小輩,讓他們閱讀關於redux/ngrx,他們可以輕鬆跟蹤數據在應用程序中的流動方式。事實上,即使反應開始出現在角色團隊中,情況也是如此,反之亦然。至少對我而言:我和我的同事可以輕鬆地討論問題併成功解決問題,但我使用Angular並使用React。

你應該遵循API調用的redux過程嗎?好。技術上你可以忽略這一點。但爲什麼? Redux上有很多有用的工具。例如redux開發工具。如果你使用動作來進行api調用,那麼你也可以在Redux開發工具中看到它們。您可以看到操作列表,操作負載(您從服務器收到的內容),此操作如何更改您的狀態。

+0

謝謝。 對於Redux項目,我是否必須遵循我所有API調用的redux過程? –

+0

爲什麼不呢? Redux是關於國家管理的。數據,從服務器檢索到的事件是您應用程序狀態的一部分。那麼,爲什麼你應該忽略這個利潤?你將會有日誌,因爲redux你將有清晰的數據方式。 –

+0

我有很多API調用,並且在很多情況下,它只是用於構建單個組件,而不會與其他組件共享數據。使用redux很難做到這一點。 –

0

如果數據和邏輯都是自包含的,則不需要使用redux模式,因爲它只會引入不必要的複雜性。

https://medium.com/@dan_abramov/you-might-not-need-redux-be46360cf367

+0

完全同意@Meeker。如果您考慮將來擴展它,您可以將Redux視爲您項目的替代方案。如果你只是創建一個單一的組件應用程序,我也建議不要使用Redux。 –

+0

是的,很明顯。但我的問題是:在一個Redux項目中,即使對於不在組件之間共享的數據,所有API調用都必須遵循actions/redurs/effects過程。我在帖子中舉了一個例子。 謝謝。 –

+0

不,他們不。事實上,如果您想要可共享且可重複使用且易於維護的組件,這是不好的做法。 – Meeker

0

首先什麼是Redux?

終極版是JavaScript應用程序的應用狀態管理器,並 通過在應用程序中的 單向數據流保持與通量架構的核心原則。 Redux應用程序只有一個全局的只讀應用程序狀態。通過在控制方式下更新它的操作集合或操作流程「減少」來計算該狀態 。

Redux In Angular?

Redux的狀態經理一直很受歡迎和有啓發 創造@ngrx的,一組實現的 以同樣的方式管理國家,以及一些中間件和工具在 模塊Redux生態系統。 @ngrx創建時專門用於 Angular和RxJS,因爲它非常依賴可觀察的範例。 無論您在上面看到的組件進行管理使用NGRX店 (更新至第4版)的優勢,現在升級的,我們直接在NGRX有懶加載 支持中使用特色模塊

凡使用它?

一個小場景將使它的使用相當明確

我希望你可能已經使用Facebook的右:P所以如果你看@ Facebook的 網站,你會看到這樣的Navbar多個組件,左圖, 聊天箱等有沒有想過當一個新的消息傳遞給你所有的 這些都是同時更新如何?如果他們去參加活動或 事件發射器,他們將被吞噬在意大利麪代碼海中。 哪個即使實現也很難調試或進行更改。

這裏是使用ngrx狀態管理的所有信息是 存儲在一個地方,當數據的狀態改變時,所有組件都被識別。看看堆棧溢出的這個答案 將清除更多的概念圖像清晰。

如何實現Redux?

有兩種選擇,一種是ng-redux,另一種是ngrx。我個人非常喜歡ngrx及其廣闊的社區和偉大的想法。

你可以看看@這link爲計數器應用程序和添加列表到Ngrx v4。

如果你想看看使用整個ngrx suite實現的整個應用程序,看看this git repo這是部署在link

對此的引用來自我的gh-page,我在這裏傳播了Angular Concepts的詞。