包括"查看"在redux状态下的函数

时间:2017-11-04 09:27:18

标签: javascript reactjs redux

在处理帖子和评论的应用程序中,我希望将我的状态保持在平坦,规范化的结构中,以尽可能灵活。具体来说,我希望将所有帖子和评论作为键值对,其中键是帖子或评论的ID,值是帖子或评论。即,我的州看起来像这样:

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

这种状态结构简化了大多数减速器的情况。但是,在组件中,我反复需要执行以下操作来获取帖子或注释的数组:

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

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

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

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

但这似乎不起作用。

2 个答案:

答案 0 :(得分:1)

您可以使用更高阶的组件来包装组件并在其中注入其他支柱。我建议从recompose库中查看withProps,以便以简洁的方式执行此操作。

答案 1 :(得分:1)

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

我们建议典型的规范化状态部分应该像:

grep 'UtranCell' file | datamash -W -g2 sum 3-6

您还应该使用memoized "selector" functions来封装从商店状态派生数据的过程。

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

我在Redux Reducers and SelectorsReact/Redux links list部分中有关于缩减器,选择器和规范化的其他文章的链接。