我有选择器从存储(filterSelector)获取当前的过滤器类型。
另外还有3个使用不同逻辑的商店过滤实体,让我们假设他们的名字是smallEntitiesSelector,mediumEntitiesSelector,bigEntititiesSelector。根据结果先前的选择动态地定义选择器
什么是创建选择器的最佳方式,它将根据存储器中的过滤器值返回过滤的实体?
const filteredEntities = createSelector(
filterSelector,
(filterType) => {
switch filterType:
case "small": ???
case "medium": ???
case "big": ???
}
)
对于这个特殊的例子中,我将创建一个选择,它接受过滤参数,但在现实情况下,我有这样的选择中更复杂的逻辑,我不想将它们混合。
UPD: 由于评论中的请求,我会添加更多的代码。这是一种方法,我如何让它工作:
const filteredEntities = createSelector(
filterSelector,
smallEntitiesSelector,
mediumEntitiesSelector,
bigEntititiesSelector,
(filterType, smallEntities, mediumEntities, bigEntities) => {
switch filterType:
case "small": return smallEntities;
case "medium": return mediumEntities;
case "big": return bigEntities;
}
)
但我不喜欢这样的解决方案,因为所有3个选择每次都会原来的实体变被执行,而我只需要一个被执行。所以TI的工作,但我觉得有一种方法可以做得更好。
什么是预期行为以及您的解决方案为何不适合您? –
预期行为:我想根据filterType选择的结果得到我的一个选择器的结果。 我的解决方案根本无法解决问题。 如果你把选择器功能而不是问号(smallEntitiesSelector而不是第一种情况下) - 你会得到这个选择器作为filteredEntities选择器的结果,而我想要得到的结果smallEntitiesSelector – ilyabasiuk
它看起来像一个问题更多与语言有关的话就是图书馆自己。请提供您的代码。 –