2

假设我们有一个包含 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 个组件中都会触发订阅侦听器。

  1. 这对性能有负面影响吗?
  2. 还有比这更好的方法吗?

我想过把Observable<Hero>它放进商店而不是Hero让商店看起来像Observable<{[heroId: string]: Observable<Hero>}>

然后是这样的:

heroStore.getValue()[heroId].subscribe(hero => {
  this.hero = hero;
});

将是可能的。但是话又说回来,这似乎有点疯狂。建议的解决方法是什么?或者更具体地说:您如何使用 ngrx/store 处理哈希映射资源存储

4

0 回答 0