使用嵌套数组

时间:2016-01-11 16:56:56

标签: redux reducers

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

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

{
  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中。每次状态发生变化时,我都会通过评论/评论列表进行映射。随着数据量的增长,reducers变得更加嵌套,管理起来也很复杂。

有没有办法将其组合成3个减速器:UserReduce r,ReviewReducerCommentReducer

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

绝对。使用扁平结构更容易。

查看https://github.com/gaearon/normalizr有关拆分数据的建议。并在https://github.com/rackt/reselect上准备要在组件中使用的状态数据。

想法是按实体类型将实体数据拆分为多个Reducer。然后构建一个选择器 - 这个函数可以获取全局存储并返回一些方便的数据结构。