Redux 如何将参数传递给createSelector的结果函数(重新选择)

Redux 如何将参数传递给createSelector的结果函数(重新选择),redux,reselect,Redux,Reselect,我的redux商店有两个独立的部分A和B 我需要一个记忆选择器,它只在a发生变化时返回从B派生的内容 比如说 const getSliceA = (state) => state.A export const getSliceB = createSelector( getSliceA, (a) => { return MyDerive(state.B) } ) 我的问题是如何将state或state.B发送到resultFunc const compareBySliceA

我的redux商店有两个独立的部分A和B

我需要一个记忆选择器,它只在a发生变化时返回从B派生的内容

比如说

const getSliceA = (state) => state.A

export const getSliceB = createSelector(
 getSliceA,
 (a) => {  return MyDerive(state.B) }
) 
我的问题是如何将state或state.B发送到resultFunc

const compareBySliceA=(prevSate:RootState,newState:RootState)=>{
//这只是一个示例,您可以比较切片的内部
if(newState.SliceA==prevState.SliceB){
返回真值
}   
返回false;
};
常量getDerivedSliceB(状态:RootState):列表=>
state.SliceB.filter(ElementB=>ElementB.visible)
const createComparatorSelector=createSelectorCreator(
默认记忆化,
比勒比什利西亚,
);
导出常量myDeepSelector=createComparatorSelector(
(状态:RootState)=>状态,
(state:RootState):List=>getderivedsicleb(state),
);

compareBySliceA和getDerivedSliceB都需要公共父级,即在上面的示例状态中,是SliceA和SliceB的parnet。

因此,您只想在
状态A
更改时重新计算,而不想在
状态B
更改时重新计算。不同的
状态.B
不会影响状态派生结果吗?有什么理由不向resultFunc提供两个状态片吗?@Andreacarro我找到了一个解决方案,可以使用“createSelectorCreator”并自定义defaultMemoize的“isEqual”。正如您所建议的,我必须将这两个片段发送到defaultMemoize。谢谢。@Hiran你能把你的解决方案作为答案发布吗。这会有帮助的。Thanks@bsapaka请参阅我的答案,如果您需要任何澄清,请随时询问。
const compareBySliceA = (prevSate: RootState, newState: RootState) => {
    // This is just an example you can compare inner of Slice A
    if (newState.SliceA === prevState.SliceB) {
        return true
    }   
    return false;
};

const getDerivedSliceB (state: RootState): List<any> => 
    state.SliceB.filter(ElementB => ElementB.visible) 


const createComparatorSelector = createSelectorCreator(
  defaultMemoize,
  compareBySliceA,
);


 export const myDeepSelector = createComparatorSelector(
  (state: RootState) => state,
  (state: RootState): List<any> => getDerivedSliceB(state),
);