如何编写这个Store结构?

时间:2016-08-26 10:08:07

标签: javascript redux

我试图找出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如何知道保存此列表的位置?我是否必须在动作参数中指定保存位置?

感谢您的建议。

1 个答案:

答案 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。您希望切片状态树的特定部分,依此类推。因此,有人可能会建议您以不同的方式存储您的州。

但是,如果你让它发挥作用,任何事都有效!祝你好运!