从商店的多个切片中获取NGRX数据的最佳方法是什么

时间:2019-10-14 23:51:14

标签: angular rxjs ngrx

是否存在从NGRX存储的多个片中获取数据的最佳实践?我正在使用NGRX实体,并且对公司,用户,供应商和订单有一个细分,在特定的组件中,我需要访问所有4个。我尝试了几种不同的方法,但它们似乎都很麻烦。

我应该使用来自多个实体的4个单独的选择器,还是最好在根级别创建一个选择器,并包含详细信息页面所需的所有内容?

当前,我正在使用combineLatest运算符

this.subscription.add(this.store.select(fromUser.getUsers).pipe(
    combineLatest([
        this.store.select(fromCompanies.selectAll),
        this.store.select(fromVendors.selectAll),
        this.store.select(fromOrders.getOrders),
    ]))

1 个答案:

答案 0 :(得分:1)

我发现组合选择器的最佳方法是使用选择器,这也是最有效的方法,因为NgRx在此做了一些优化。

createSelector可以由多个选择器组成,在您的情况下为:

export const foo = createSelector(
  fromUser.getUsers,
  fromCompanies.selectAll,
  fromVendors.selectAll,
  fromOrders.getOrders,
  (users, companies, vendors, orders) => {
     // logic here
  }
)

有关更多信息,请参见documented