首页 文章

在redux中normalizr之后的非规范化实体

提问于
浏览
1

我看到有关在redux中规范化商店的大量信息 . 但是,当您想要从图表中显示数据时,您会怎么做?

我的数据如下所示{courses:[{chapter:[{assignments:[]}]}]}

每个实体都有我手机上的数据 . 写代码太可怕了 .

我想在页面上显示该数据,但我的所有数据都是normalaliz'd . 此外,ID喜欢为所有三个实体提供容器组件 .

无论是否正常化,在redux中这似乎都很难做到 . 必须有一种推荐的处理方式 .

谢谢

2 回答

  • 1

    您可以创建接受所需数据的Id的容器 . 容器'连接组件与商店 . 然后组件创建容器,用于连接带有商店的子等等 .

    要通过ID从商店获取数据,您可以查看:Javascript Redux - how to get an element from store by id

    要减少样板,您可以使用三个视图示例连接相同模块中的组件:

    https://github.com/reactjs/redux/tree/master/examples/tree-view

    显然你的组件将不再那么愚蠢(叶子组件除外) .

    也请检查此示例:At what nesting level should components read entities from Stores in Flux?

  • 1

    我解决这个问题的方法是通过非规范化函数从Redux状态运行我想要的对象 . 我在 mapStateToProps 函数中执行了此操作,然后将其传递到 connect .

    如果你在容器级别执行此操作,那么您可以选择完全非规范化对象的哪些部分,然后通过 props 发送到其他组件(因此,不使用 connect ,再次非规范化没有真正的好处) .

    对于denormalizer函数,您可以使用denormalizr库 . 但是如果你看source code实际函数不是太大,它可能会被修改以满足你的需要,并直接挂钩到Redux状态,例如 .

相关问题