0

我有一个项目,我在其中获得了一个大的前置 JSON,它基本上成为程序的状态。JSON 的一个愚蠢示例可能如下所示:

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

所以这是我的数据。但在默认初始化下,这不是我的状态。

   app: {
     people: []
   }

我真的希望它是这样的

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

我不了解的关键是我的模型ngrxngxs我的状态之间的关系。一个不亮的灯泡。

  1. 什么机制负责创建人员集合?
  2. 什么机制负责计算每个人的年龄

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

4

1 回答 1

2

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

这就是我的理解。

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

答:装饰类中的@Action()装饰函数@State()应该负责操纵应用程序的状态和具有副作用的操作(即异步工作,如 HTTP GET/POST)。

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


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

答:您可以选择应用程序状态的切片,在这种情况下是一个人的出生日期,并计算年龄,然后返回该值(作为“派生”状态值)。这可以在@Select()装饰函数中完成。


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

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


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

答:我想大多数时候都是这种情况。所以,在@State()装饰类中,我们将注入某种HttpPersonLoaderService你在某个时候调用的地方来远程加载/保存。


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

于 2018-05-07T00:19:47.533 回答