JSON Monolith模型,它如何与State相关并构建Store?

时间:2018-05-04 20:29:58

标签: ngrx ngxs

我有一个项目,我得到一个大型的前端JSON,它基本上成为程序的状态。 JSON的一个愚蠢的例子可能如下所示:

{
   app: {
     people: [
        {
            name: "bill",
            dob: "04/05/2017",
        }
     ]
   }
}

所以这是我的数据。但是我的状态不是默认初始化可能看起来像这样。

   app: {
     people: []
   }

我实际上希望它成为这个

   app: {
     people: [
        {
            name: "bill",
            dob: "04/05/2017",
            daysOld: 365
        }
     ]
   }

关于ngrx / ngxs,我不明白的关键是我的模型和我的国家之间的关系。一个未能点火的灯泡。

  1. 什么机制负责创建一组人?
  2. 负责计算每个人年龄的机制
  3. 或者我完全没有滑雪道?试图从一块巨石中提前生成整个商店只是错误的做法?例如,我的模型是否在某处,我使用它作为动态引用以后创建状态?

1 个答案:

答案 0 :(得分:2)

过去一周我一直在学习ngxs。

这就是我的理解。

问:什么机制负责创建一组人?

答:@State()装饰类中的@Action() decorated functions应负责使用side effects操纵应用程序的状态和操作(即HTTP GET / POST等异步工作)。

因此,在@Action修饰函数中处理通过操纵应用程序状态和在服务器上持久化人物对象来创建人物对象。

问:什么机制负责计算每个人的年龄

答:在这种情况下,您可以选择一个应用程序状态切片,一个人的dob,然后计算年龄,然后返回值("派生"状态值)。这可以在@Select()修饰函数中完成。

问:问:试图从一块巨石中提前生成整个商店只是错误的方法吗?

答:我不知道。我认为取决于您的应用程序的性质。我想我们不可能一直将整个应用程序的数据加载到状态(内存)中 - 除非应用程序的状态非常小。

问:例如,我的模型是否在某处,我使用它作为动态引用以后创建状态?

答:我想大多数时候都是这种情况。因此,在@State()装饰类中,我们将注入某种HttpPersonLoaderService,您可以在某处调用以远程加载/保存。

最后,只想和你分享一个简单的ngxs example。这个简单的例子不会远程加载数据。