使用重新选择有条件地组合选择器


export const mySelector = createSelector(
    [selectorA, selectorB], // but I want selectorB or selectorC to be chosen here using logic
    (foo, bar) => {
        // ...
    }
);

我想在根据存储中的状态(即另一个选择器返回的值)创建此选择器时有条件地使用 selectorBselectorC

我该怎么做?

只是要指出,在接受的答案中建议的方法将评估每个选择器CorB调用的selectorBselectorC。这可能不是期望的行为。

实际的条件调用可能实现如下:

export const selectorCorB = createSelector(
    selectorStateX
    (...arguments) => arguments,
    (x, arguments) => x ? selectorB(...arguments) : selectorC(...arguments)
);

则创建一个 selectorCorB 组合 selectorB, selectorC , selectorX

selectorX 是存储中该变量 x 的选择器,它决定选择器 B 或选择器 C

const selectorCorB = createSelector(
  selectorB,
  selectorC,
  selectorStateX,
  (b, c, x) => x? b: c
) 
mySelector = createSelector(
    [selectorA, selectorCorB], // will be A AND B OR C depending on x
    (foo, cOrb) => {
        // ...
    }
);

相关内容

  • 没有找到相关文章

最新更新