【问题标题】:Composing reducers with nested array使用嵌套数组组合减速器
【发布时间】:2016-04-16 02:00:42
【问题描述】:

我使用 Redux 已经有一段时间了,我很喜欢它 :)

在处理嵌套数组时,我对如何组合 reducer 有点困惑。我有一个用户对象,它有一个评论列表。每个评论都可以有一个 review_cmets 列表。

{
  user: {
  id: 1, 
  reviews: [{
     id: 1, 
     comments: [{
        id: 1, 
        message: "Test"
     }, {
        id: 2, 
        message: "123"
     }, {
        id: 3, 
        message: "456"
     }]}, {
        id: 2, 
        comments: [{
            id: 5, 
            message: "qwerty"
        }, {
            id: 6, 
            message: "1542354"
        }, {
            id: 7, 
            message: "45we 6"
        }]
    }]
}}

现在,所有这些都在同一个 UserReducer 中。每次状态发生变化时,我都会通过评论/ cmets 列表进行映射。随着我的数据量的增长,reducer 变得更加嵌套并且管理起来更加复杂。

有没有办法将它组合成 3 个减速器:UserReducer、ReviewReducerCommentReducer

感谢您的帮助。

【问题讨论】:

    标签: redux reducers


    【解决方案1】:

    当然。使用扁平结构更容易。

    查看https://github.com/gaearon/normalizr 了解有关拆分数据的想法。在https://github.com/rackt/reselect 上,用于准备要在组件中使用的状态数据。

    想法是按实体类型在多个 reducer 上拆分实体数据。然后构建一个选择器 - 函数,它接受全局存储并返回一些方便您的数据结构。

    【讨论】:

    • Normalizer 看起来像是我一直在寻找的解决方案。感谢您的提示:)
    猜你喜欢
    • 2020-07-07
    • 1970-01-01
    • 1970-01-01
    • 2021-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-26
    • 1970-01-01
    相关资源
    最近更新 更多