export const mySelector = createSelector(
[selectorA, selectorB], // but I want selectorB or selectorC to be chosen here using logic
(foo, bar) => {
// ...
}
);
我想在根据存储中的状态(即另一个选择器返回的值)创建此选择器时有条件地使用 selectorB
或 selectorC
。
我该怎么做?
只是要指出,在接受的答案中建议的方法将评估每个选择器CorB调用的selectorB和selectorC。这可能不是期望的行为。
实际的条件调用可能实现如下:
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) => {
// ...
}
);