使用嵌套数组组合 reducer

Composing reducers with nested array

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

在处理嵌套数组时,我对如何编写 reducer 感到有点困惑。我有一个用户对象,其中有一个评论列表。每条评论可以有一个 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 中。每次状态发生变化时,我都会浏览评论/评论列表。随着我的数据规模的增长,reducer 变得更加嵌套和管理复杂。

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

感谢您的帮助。

当然可以。使用平面结构更容易。

查看 https://github.com/gaearon/normalizr for ideas about splitting the data. And on https://github.com/rackt/reselect 以准备要在您的组件中使用的状态数据。

想法是按实体类型拆分多个 reducer 上的实体数据。然后构建一个选择器 - 采用全局存储和 return 一些对您方便的数据结构的函数。