reselect: передать несколько параметров составному селектору - PullRequest
0 голосов
/ 24 июня 2019

Я создал селектор, который состоит из двух других селекторов:

export const getAvailableFilters = createSelector(
  getOpenedFilterMenu,
  isSaleCategory,
  (filterMenu, isSale) => {
    // .... doing stuff
  },
);

* getOpenedFilterMenu, а также isSaleCategory зависят от состояния притока и от компонента, но зависят от разных реквизитов..

Когда я пытаюсь получить доступ к селектору, как это getAvailableFilters(state, ownProps.streamId, activeCategory.id), компилятор TypeScript выдает ошибку, что тип первого параметра не соответствует.Когда я удаляю селектор isSaleCategory из списка селекторов ввода, TS не жалуется.Любая идея, почему это так?

Как составить селекторы, которые имеют разные реквизиты?

1 Ответ

0 голосов
/ 26 июля 2019

inputSelectors (getOpenedFilterMenu и isSaleCategory) вызываются с теми же аргументами, что и ваш селектор reselect (state, ownProps.streamId, activeCategory.id).Кажется, что ваши inputSelectors и конечный селектор ожидают разные аргументы.

Быстрое решение может состоять в том, чтобы обернуть ваши inputSelectors и функцию адаптера, чтобы передать им ожидаемые аргументы:

export const getAvailableFilters = createSelector(
  (state, streamId, activeCategoryId) => getOpenedFilterMenu(state, activeCategoryId),
  (state, streamId, activeCategoryId) => isSaleCategory(state, streamId),
  (filterMenu, isSale) => {
    // .... doing stuff
  },
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...