Каков наилучший способ получить данные NGRX из нескольких срезов магазина - PullRequest
0 голосов
/ 15 октября 2019

Есть ли лучшая практика для получения данных из нескольких срезов хранилища 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 Ответ

1 голос
/ 15 октября 2019

Я считаю, что лучший способ комбинировать селекторы - это использовать селекторы, это также будет наиболее эффективным способом, потому что здесь NgRx выполняет некоторую оптимизацию.

A createSelector может состоять из нескольких селекторов, в вашемВ этом случае это будет:

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

Для получения дополнительной информации см. Обмен данными между модулями - это арахис

...