JSON Monolith Model,它与State和Store的构建有什么关系?

JSON Monolith Model, how it relates to State and constructing the Store?

我有一个项目,在这个项目中我得到了一个很大的前期 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. 什么机制负责计算每个人的年龄

或者我完全离开了滑雪道?尝试从单体中提前生成整个商店是错误的方法吗?例如,我的模型是否去了某个地方,我将其用作以后动态创建状态的参考?

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

这是我的理解。

问:负责创建人员集合的机制是什么?

A:@Action() decorated functions in your @State() decorated class should be responsible for manipulating your application's state AND operations with side effects(即像 HTTP GET/POST 一样的异步工作)。

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


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

A:你可以 select 你的应用程序状态的一部分,在这种情况下是一个人的出生日期,并计算年龄,然后 return 值(如 "derived" 状态价值)。这可以在 @Select() 修饰函数中完成。


问:尝试从单体中提前生成整个商店是错误的方法吗?

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


问:例如,我的模型是否去了某个地方,我将其用作以后动态创建状态的参考?

A:我想大多数时候都是这种情况。因此,在 @State() decorated class 中,我们将注入某种 HttpPersonLoaderService ,您在某些时候远程调用 load/save。


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