【问题标题】:reselect: pass multiple parameters to composed selector重新选择:将多个参数传递给组合选择器
【发布时间】:2019-06-24 14:23:59
【问题描述】:

我创建了一个由其他两个选择器组成的选择器:

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

getOpenedFilterMenuisSaleCategory 依赖于 redux state 和一个组件 prop,但它们依赖于不同的 props。

当我尝试访问像 getAvailableFilters(state, ownProps.streamId, activeCategory.id) 这样的选择器时,TypeScript 编译器会抛出第一个参数的类型不匹配的错误。 当我从输入选择器列表中删除 isSaleCategory 选择器时,TS 不会抱怨。知道这是为什么吗?

如何组合具有不同依赖属性的选择器?

【问题讨论】:

    标签: redux react-redux reselect


    【解决方案1】:

    inputSelectors(getOpenedFilterMenuisSaleCategory)使用与reselectselector(stateownProps.streamIdactiveCategory.id)相同的参数调用。您的 inputSelectors 和最终选择器似乎需要不同的参数。

    一个快速的解决方案可能包括将您的 inputSelector 包装到适配器函数中,以便为它们提供预期的参数:

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

    【讨论】:

      猜你喜欢
      • 2012-08-31
      • 2018-11-06
      • 1970-01-01
      • 1970-01-01
      • 2017-09-01
      • 2022-01-18
      • 1970-01-01
      相关资源
      最近更新 更多