使用嵌套数组组合reducers

skm*_*asu 5 reducers redux

我现在正在使用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"
        }]
    }]
}}
Run Code Online (Sandbox Code Playgroud)

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

有没有办法把它组成3个减速器:UserReducer,ReviewReducerCommentReducer

谢谢您的帮助.

Vla*_*kov 4

绝对地。使用扁平结构要容易得多。

请访问https://github.com/gaearon/normalizr了解有关分割数据的想法。并在https://github.com/rackt/reselect上准备要在组件中使用的状态数据。

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