我正在使用Redux一段时间了,我很喜欢:)
在处理嵌套数组时,我对如何组成化简器有些困惑。我有一个用户对象,其中包含评论列表。每个评论可以有一个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个reducer:
UserReduce
r,ReviewReducer
和CommentReducer
?谢谢您的帮助。
最佳答案
绝对。使用平面结构要容易得多。
查看https://github.com/gaearon/normalizr以获得有关拆分数据的想法。然后在https://github.com/rackt/reselect上准备要在组件中使用的状态数据。
想法是按实体类型在几个化简器上拆分实体数据。然后构建一个选择器-函数,该函数接受全局存储并返回一些对您方便的数据结构。