首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该如何使用createEntityAdapter来使用片内的选择器?

我应该如何使用createEntityAdapter来使用片内的选择器?
EN

Stack Overflow用户
提问于 2022-03-18 18:20:28
回答 1查看 365关注 0票数 0

目前,我在适配器文件中定义了所有适配器,并从那里导出它们。在我的切片中,我导出一个selectors对象,其中包含由entityAdapter生成的选择器。由于我的entityState嵌套在片状态中,所以我定义了如下所示的选择器:

const entitySelectors = myAdapter.getSelectors<RootState>((state) => state.sliceState.entities)

我希望在它们导出的同一片的还原器中使用这些选择器(它们可以访问片状态),这样我就不会编写适配器已经为我准备的逻辑。是否有一种优雅的方法可以做到这一点,而不必定义相同选择器的两个版本(一个用于RootState,另一个用于SliceState)?

我可以这么做:

代码语言:javascript
复制
const sliceStateSelectors = myAdapter.getSelectors<SliceState>((state) => state.entities);
const rootStateSelectors = myAdapter.getSelectors<RootState>((state) => state.sliceState.entities);

export const selectors = {
...rootStateSelectors,
// other selectors
}

并在还原器中使用sliceState选择器,但从清晰/重复的角度来看,这似乎不可取。

EN

回答 1

Stack Overflow用户

发布于 2022-03-19 16:14:27

Redux选择器通常会将整个Redux根状态对象作为参数,但切片只是该状态的一部分。因此,是的,如果要在还原器内部使用选择器,则需要创建只接受片状态的备用版本。

这就是说:老实说,我建议不要试图在片的减速器中使用选择器。这里并没有什么好处。很容易完成state.entities[someId]而不是selectById()等操作,而且片的还原器逻辑控制着这些项的存储方式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71531558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档