【问题标题】:Include "view" function in redux state在 redux 状态中包含“查看”功能
【发布时间】:2017-11-05 00:44:46
【问题描述】:

在处理帖子和 cmets 的应用程序中,我希望将我的状态保持在一个平坦、规范化的结构中,以尽可能灵活。具体来说,我希望将所有帖子和 cmets 作为键值对,其中键是帖子或评论的 id,值是帖子或评论。即,我的状态如下所示:

state = {
    posts: new Map(),
    comments: new Map()
},

这种状态结构简化了大多数 reducer 情况。然而,在组件中,我反复需要执行以下操作来获取帖子或 cmets 的数组:

Array.from(this.props.posts.values())

this.props.posts 是 redux 状态的帖子映射到特定组件的 props。

有没有办法将最后一个代码 sn-p 添加到状态中,很像关系数据库中的视图?我试过了

state = {
    posts: new Map(),
    comments: new Map(),
    postArray: () => { return Array.from(posts.values()) }
},

但这似乎不起作用。

【问题讨论】:

    标签: javascript reactjs redux


    【解决方案1】:

    请参阅 Redux 文档的 Structuring Reducers 部分,特别是 Normalizing State Shape 部分。

    我们建议典型的标准化状态部分应该像这样:

    users : {
        byId : {},
        allIds : []
    }
    

    您还应该使用memoized "selector" functions 来封装从存储状态导出数据的过程。

    另外,我个人非常喜欢使用 Redux-ORM library 作为抽象层来管理 Redux 存储中的规范化数据。我的"Practical Redux" tutorial series 演示了如何使用它。

    我的React/Redux links listRedux Reducers and Selectors 部分中有关于reducers、选择器和规范化的其他文章的链接。

    【讨论】:

      【解决方案2】:

      您可以使用更高阶的组件来包装您的组件并在其中注入额外的道具。我建议以简洁的方式查看 recompose 库中的 withProps

      【讨论】:

        猜你喜欢
        • 2018-08-07
        • 2019-08-09
        • 2021-11-26
        • 2020-03-04
        • 2020-02-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-20
        相关资源
        最近更新 更多