繁体   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