假设我们有一个包含 100 个英雄的列表。每个英雄都有一个 id 和一个 name 属性,所以 hero 模型将是:
interface Hero {
id: string;
name: string;
}
我想使用带有哈希映射(字典)数据结构的 ngrx/store 来快速访问单个英雄。所以 hero-store 会有这个结构Observable<{[heroId: string]: Hero}>
。
然后在我的hero-component
我想通过 id 加载英雄,所以它看起来像:
<app-hero [heroId]="25"></app-hero>
在控制器中:
heroStore.subscribe(updatedStore => {
this.hero = updatedStore[this.heroId];
}
这可行,但对我来说似乎并不理想,因为当仅更新一个英雄时,在所有 100 个组件中都会触发订阅侦听器。
- 这对性能有负面影响吗?
- 还有比这更好的方法吗?
我想过把Observable<Hero>
它放进商店而不是Hero
让商店看起来像Observable<{[heroId: string]: Observable<Hero>}>
然后是这样的:
heroStore.getValue()[heroId].subscribe(hero => {
this.hero = hero;
});
将是可能的。但是话又说回来,这似乎有点疯狂。建议的解决方法是什么?或者更具体地说:您如何使用 ngrx/store 处理哈希映射资源存储?