我创建了一个由其他两个选择器组成的选择器:
export const getAvailableFilters = createSelector(
getOpenedFilterMenu,
isSaleCategory,
(filterMenu, isSale) => {
// .... doing stuff
},
);
getOpenedFilterMenu
和isSaleCategory
取决于redux状态和组件属性,但是它们取决于不同的属性。
当我尝试访问像getAvailableFilters(state, ownProps.streamId, activeCategory.id)
这样的选择器时,TypeScript编译器会引发错误,指出第一个参数的类型不匹配。
当我从输入选择器列表中删除isSaleCategory
选择器时,TS不会抱怨。知道为什么吗?
如何组成具有不同依赖道具的选择器?
答案 0 :(得分:1)
getOpenedFilterMenu
选择器(isSaleCategory
,reselect
,state
)相同的参数调用 inputSelectors(ownProps.streamId
和activeCategory.id
) 。看来您的inputSelectors和最终选择器期望使用不同的参数。
一种快速的解决方案可能包括将inputSelectors包装到and适配器函数中,以将期望的参数提供给它们:
export const getAvailableFilters = createSelector(
(state, streamId, activeCategoryId) => getOpenedFilterMenu(state, activeCategoryId),
(state, streamId, activeCategoryId) => isSaleCategory(state, streamId),
(filterMenu, isSale) => {
// .... doing stuff
},
);