使用嵌套数组组合 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 个减速器:UserReduce
r、ReviewReducer
和 CommentReducer
?
感谢您的帮助。
当然可以。使用平面结构更容易。
查看 https://github.com/gaearon/normalizr for ideas about splitting the data. And on https://github.com/rackt/reselect 以准备要在您的组件中使用的状态数据。
想法是按实体类型拆分多个 reducer 上的实体数据。然后构建一个选择器 - 采用全局存储和 return 一些对您方便的数据结构的函数。
我使用 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 个减速器:UserReduce
r、ReviewReducer
和 CommentReducer
?
感谢您的帮助。
当然可以。使用平面结构更容易。
查看 https://github.com/gaearon/normalizr for ideas about splitting the data. And on https://github.com/rackt/reselect 以准备要在您的组件中使用的状态数据。
想法是按实体类型拆分多个 reducer 上的实体数据。然后构建一个选择器 - 采用全局存储和 return 一些对您方便的数据结构的函数。