0

我正在用 Angular 构建一些东西并使用

我的对象具有具有特定值的对象。让我们假装:

name: "john",
sex: "m"
children: [
  {
  name: "joe",
  sex: "m"
  children: [
    {
    name: "mary",
    sex: "f"
    children: [
      {
      name: "ryan",
      sex: "m"
      children: []
      }
    ]
    }
  ]
],
name: "sue",
sex: "f"
children: [
  {
  name: "joe",
  sex: "m"
  children: [
    {
    name: "mary",
    sex: "f"
    children: [
      {
      name: "ryan",
      sex: "m"
      children: []
      }
    ]
    }
  ]
]

可以说我想:

  1. 计算约翰的子孙总数。
  2. 数一数约翰有多少孙子孙女。

好吧:

  1. 使用 Angular/Redux 时,我会在哪里为此编写函数?在获得状态之前我会这样做吗?在我进行 API 调用并获取我的状态之后?在减速机?在组件中?
  2. 迭代并获得我想要的这两个计数的最快/最佳方法是什么?因为我知道 Angular 有一些内置的东西,它会有更快的方法来做到这一点吗?还是通过普通的 JS?

最后一点:

  1. 假设我有一些兄弟组件(约翰的妻子,苏)将使用这个类似的计数或信息。如果我想让我的代码保持干燥,我应该在哪里制作这些计数功能?

如果某些信息计数会有所不同,我是否会使用我之前的状态?可以说这只是计算女性儿童/孙女。john's 是给男孩子/孙子的。

或者我应该为这些(m&f)制作两个状态并处理它们?

File Structure:
app
 |store
   |actions
   |models
   |reducers
   |effects
 |views
   |john
     |.html
     |.ts
   |sue
     |.html
     |.ts
 |app.ts etc
4

1 回答 1

0

我认为您的很多观点都可以通过使用来回答selectors

https://ngrx.io/guide/store/selectors

1.) 您可以制作许多选择器。也许您可以制作一个选择器,该选择器接受名称(字符串)的输入,并可以为您提供它拥有的孩子的数量。还有另一个选择器,可以为您提供此名称的孙子数量。然后,您可以将其组合到您的组件中。也许您可以制作一个同时计算两者的选择器。由你决定。

2.) 在 1 中回答。

3.) 您可以将它写为可能在 store 文件夹中的选择器,然后可以在 store 的参数中selectors.ts传递这些选择器函数。select

4.) 最快最好的方法是使用普通的 JS 或 lodash 之类的 JS 库。Angular 内置了很多东西,但它是一个 UI/View 库,而不是一个让常见的 JavaScript 操作更快的库。

5.) 我会有一个状态片,就像前面提到的那样,使用选择器函数将状态转换为我感兴趣的数据。

于 2020-03-13T01:07:08.413 回答