首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当使用createEntityAdapter时,每个React组件都应该有自己的部分吗?

当使用createEntityAdapter时,每个React组件都应该有自己的部分吗?
EN

Stack Overflow用户
提问于 2021-02-23 15:14:36
回答 1查看 568关注 0票数 0

我正在使用Redux的createSlicecreateEntityAdapter与规范化数据。

这是一个典型的博客应用程序(帖子、评论、用户)-实体

通常,在使用createEntityAdapter之前,我会:

  1. postsSlice中获取、规范化和存储数据 所以我的postSlice state看起来是这样的: blogPosts: {entities: {posts: {}, users:{}, comments: {}}, ids:[]}
  2. 获取idpostsSlice的状态到Posts组件
  3. 将注释/用户idPosts传递到子Comment User组件,在那里他们将使用传递的id获得数据,选择器连接到父级的postSlice状态。
代码语言:javascript
复制
const postsAdapter = createEntityAdapter();

const postsSlice = createSlice({
  name: "posts",
  initialState: postsAdapter.getInitialState(),

  reducers: {
    setPosts: (state, { payload }) =>
      postsAdapter.setAll(state, payload.entities.posts),
  },
});

问题是:

  • 使用createEntityAdapter时 由于我们使用的是createEntityAdapter.getInitialState(),所以在每个切片中都会得到相同的initialState {entities: {} ids: []}模式。
  • 这不允许像我以前那样拥有initialState: blogPosts: {entities: {posts: {}, users:{}, comments: {}}, ids:[]}

每个组件(Posts User__ Comment__)都应该有自己的切片/还原器,并从同一个端点获取自己的数据吗?

以便:(根据createEntityAdapter.getInitialState()模式)

  • postSlice状态只包含post实体- entities: {posts: {}, ids:[]}
  • commentSlice状态-注释实体- entities: {comments: {}, ids:[]}
  • 等等。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-23 15:54:29

不是的。组件和Redux状态结构之间从来没有1:1的关联。相反,您应该使用根据数据类型和更新逻辑组织状态,并且组件应该根据自己的需要访问和重新构造这些数据。

请注意,存在使用多种方法来构造存储中的数据,即使数据正在规范化。例如,您可以将每个数据类型作为自己的顶级切片,或者有一个共享的entities还原器,其中每个类型都嵌套在其中。

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

https://stackoverflow.com/questions/66335827

复制
相关文章

相似问题

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