开发者问题收集

如何将参数传递给 createSelector (reselect) 函数的结果

2018-09-13
564

我的 redux 存储有两个独立的切片 A 和 B,

我需要一个记忆选择器,只有当 A 发生变化时,它才返回从 B 派生的内容。

例如

const getSliceA = (state) => state.A

export const getSliceB = createSelector(
 getSliceA,
 (a) => {  return MyDerive(state.B) }
) 

我的问题是如何将状态或 state.B 发送到 resultFunc。

在此处输入图片描述

1个回答
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),
);

compareBySliceA 和 getDerivedSliceB 都需要共同的父级,也就是上例中 State 是 SliceA 和 SliceB 的父级。

Hiran
2018-11-07