NGRX对如何实现数组数组感到困惑

问题描述

我真的是NGRX和状态管理的新手。我已经使用实体和选择器成功实现了我的第一个状态键。它使用键containers将具有外观和效果的所有内容加载到状态。虽然我试图弄清楚如何在具有附加数组的第一个对象加载数组中管理数组。这应该是projections的新状态键,还是应该从第一个加载的数组进行管理。

我有两个不同的graphql查询要测试。一个仅返回没有projections的容器,而一个返回projections的容器。

export const selectContainersLoaded = createSelector(
  getFeatureState,state => state.loaded
)

export const loadContaineRSSuccess = createAction(
  '[Container] Load Containers Success',props<{ payload: Container[] }>()
);

//without
{
  containers: {
    ids: [
      '0000001-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
    ],entities: {
      '0000001-xxxx-xxxx-xxxx-xxxxxxxxxxxx': {
        __typename: 'Container',id: '0000001-xxxx-xxxx-xxxx-xxxxxxxxxxxx',name: 'Black Chevy',description: 'Some testing description',projections: {
          __typename: 'ModelProjectionConnection',nextToken: null
        },}
    },loaded: true
  }
}

//with
{
  containers: {
    ids: [
      '0000001-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
    ],items: [
            {
              __typename: 'Projection',id: '0000002-xxxx-xxxx-xxxx-xxxxxxxxxxxx',containerId: '0000001-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
              name: 'testing projection'
            },{
              __typename: 'Projection',id: '0000003-xxxx-xxxx-xxxx-xxxxxxxxxxxx',containerId: '0000001-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
              name: 'another testing projection'
            }
          ]
        }
      }
    },loaded: true
  }
}

从我想我正在阅读的内容来看,状态需要进行平整并模仿数据库结构,因此projections一个单独的表,那么对于projections意味着不同的状态键。但这是我感到困惑的地方。如果我想在视图中列出所有容器,并在所有容器下方放置所有投影,该如何关联?我开玩笑的想法是,也许投影不需要通过命名连接成为单独的表,而只是容器上的数组。我也看过在选择器内部使用选择器,但还不了解。我在这里想念什么?我希望能够独立更新投影,并且容器不必具有投影。也许这对于两个不同的表来说过于复杂了,最好使用实体帮助器函数来管理对象内部的数组。但这只是让我想知道在更大的情况下如何实现这样的目标。

state => {
  containers,projections
}

如果您有一对多关系的任何代码示例,并且可能有许多映射到状态的关系,那就太棒了。我已经尝试在github上查看其他代码项目,但是即使我可能不知道或不了解我在寻找什么,我也没有找到我认为的东西。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)