簡體   English   中英

如何在具有方法的商店(ngrx,ngxs)中存儲對象

[英]How do I store objects in the store (ngrx, ngxs) that have methods

我知道Redux模式只需要將普通對象存儲在Store中(這是合乎邏輯且易於理解的)。 但是,在應用程序中,我想使用具有某些功能的對象,例如:“hasParent”,“isReadonly”,“isValid”等方法,這些都是計算出來的。

雖然,例如,ngrx不禁止存儲這些物體,但這可能導致許多問題

我應該如何處理這個存儲問題的對象? 我有兩個想法:A) - 在將對象保存到存儲之前,我將對象序列化為純數據 - 從存儲中讀取時,我將純數據映射到對象(使用映射器或“手動”)(使用對象構造函數)和setters))B)我從使用類/對象辭職,我只使用普通數據,我將hasParent,isReadonly,isValid方法移動到helpers / services。

這些解決方案都沒有缺點:(但是哪種解決方案似乎更好?也許有其他方法可以解決上述問題?

如何在商店(ngrx,ngxs)中存儲具有方法的對象 - >你沒有! 您在商店中存儲州。 功能不屬於某個州。 (你似乎在問題細節中理解這一點,但我想再次指出這一點)

至於你需要的功能:

  • readonly:在大多數情況下,這是對象上的布爾標志。 所以我不知道你為什么要用它作為一個函數。 如果只讀取決於用戶角色或其他外部因素,請將其移至“實用程序功能”,並且不將其與存儲狀態一起存儲。 你想保持盡可能小的狀態。
  • isValid:為什么要在商店中存儲無效數據,然后由另一個組件使用? 我個人認為商店內的數據總是有效,但也許有一個用例。
  • hasParent:我將其視為“parentId”,您可以使用輔助方法從中獲取實際的父對象。 但不知道你的結構,我不能說。

在考慮之前,先問問自己:我真的需要一個商店嗎? 服務不足夠嗎? 商店是目前最熱門的東西,但大多數應用程序都不需要它! 不要僅僅因為每個人都在談論它而使用它!

暫無
暫無

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

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