Redux / React状态规范化-为什么要维护单独的ID数组?

时间:2018-11-26 23:07:53

标签: react-redux normalization

在此处跟随Dan Abramov的教程:https://egghead.io/lessons/javascript-redux-normalizing-the-state-shape

他似乎没有解释用一个待办事项ID(allIds)数组维护一个额外的reducer的好处,只是让一个byId reducer和用户Object.keys或Object.values进行迭代会不会更容易在上面吗?

1 个答案:

答案 0 :(得分:0)

示例Todo应用程序按创建顺序显示待办事项列表。不可能以保证使用ObjectObject.keys跨浏览器的方式来检索该有序列表。

JS Object属性是无序的,但是数组具有顺序。因此,不能保证Object.keys()的输出顺序与添加键的顺序有任何关系。通过该数组,reduce可以按照待添加的待办事项显示待办事项。

理论上you could use a Map,因为Map中的键是有序的。但是,无法重新排序Map的内容。使用数组,您可以重新排列ID的顺序,而无需触摸待办事项对象本身。

换句话说,与ObjectMap相比,数组数据结构更适合存储有序列表。