我正在学习NGXS,并有一个带有嵌套父/子关系的状态模型,其中有一定数量的父母每个人都有自己的子集(子孙),就像这样:
state: {
parents: ParentModel[]
}
ParentModel {
children: ChildModel[]
}
ChildModel {
grandchildren: GrandChildren[]
}
etc.
但是,当状态在redux / flux实现中建模时,上面的示例(据我所知)通常会被规范化。
我希望能够以与状态树的心理模型相匹配的方式访问子孙。我想出的最好办法就是按照文档(https://ngxs.gitbook.io/ngxs/concepts/select#lazy-selectors)
中的描述创建一个“惰性选择器”。赞:
export class ChildRecordState {
@Selector()
static childRecords(state: ChildRecordModel) {
return (id: number) => state.Records.filter(r => r.parentId === id);
}
// ...
}
(此处没有孙子孙的完整示例:https://stackblitz.com/edit/angular-ngxs-parent-child)。
我确实看到可以访问子状态,并且可以在父级中使用该状态创建一个选择器,但这似乎并没有真正改善结果。问题是-与示例/ stackblitz中显示的方式相比,访问父母的子女是否有更好的模式?