如何解决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 举报,一经查实,本站将立刻删除。