Как передать параметры в результат Функция createSelector (повторно выбрать) - PullRequest
0 голосов
/ 13 сентября 2018

В моем магазине редуксов есть два независимых среза A и B,

Мне нужен запомненный селектор, который возвращает что-то, производное от B, только при изменении A.

Например

const getSliceA = (state) => state.A

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

Моя проблема в том, как отправить штат или штат.B в resultFunc.

enter image description here

1 Ответ

0 голосов
/ 07 ноября 2018
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.

...