我试图找出Redux Store处理列表的最佳方法。现在它看起来像这样:
Store = {
users: [],
posts: [],
lists: [],
}
我的问题是列表数组。从本质上讲,它是特定资源的分页列表的存储,例如:
lists: [
{
id: 'users/43/posts',
items: [25, 36, 21]
}
]
由于我使用url作为id,因此显示用户帖子列表的组件将准确知道要显示的列表。现在有人告诉我,这是一个非常糟糕的主意。而我只是想要一些可能更好的建议。建议的另一种方法是:
users: [{
id: 2,
posts: [
{
url: 'users/2/posts',
items: [13, 52, 26],
}
]
}]
所以我不明白,Redux如何知道保存此列表的位置?我是否必须在动作参数中指定保存位置?
感谢您的建议。
答案 0 :(得分:1)
嗯,从技术上讲,如果你让它工作,任何事情都有效!不过,第二种方法看起来更成熟。您不希望将URL用作ID。 ID应为数字或特殊字符序列+数字。当您的应用程序增长时,您将要对数据进行规范化,即将ID存储在单独的数组中,并将对象数组转换为具有ID作为ID的对象。
来自Normalizr的示例
[{
id: 1,
title: 'Some Article',
author: {
id: 1,
name: 'Dan'
}
}, {
id: 2,
title: 'Other Article',
author: {
id: 1,
name: 'Dan'
}
}]
可以标准化为 -
{
result: [1, 2],
entities: {
articles: {
1: {
id: 1,
title: 'Some Article',
author: 1
},
2: {
id: 2,
title: 'Other Article',
author: 1
}
}
}
}
当您的应用程序增长时,您将拥有多个reducer和sub-redurs。您希望切片状态树的特定部分,依此类推。因此,有人可能会建议您以不同的方式存储您的州。
但是,如果你让它发挥作用,任何事都有效!祝你好运!