【发布时间】:2018-09-10 04:36:41
【问题描述】:
由于 Redux 提供 store 用于将所有应用程序数据保存在一个位置,将数据保存在单个大 object 中是否是一种好习惯?如果我们有数千条记录及其数据量很大,会影响应用程序的性能吗?
【问题讨论】:
标签: reactjs redux react-router react-redux redux-thunk
由于 Redux 提供 store 用于将所有应用程序数据保存在一个位置,将数据保存在单个大 object 中是否是一种好习惯?如果我们有数千条记录及其数据量很大,会影响应用程序的性能吗?
【问题讨论】:
标签: reactjs redux react-router react-redux redux-thunk
这是一个很好的起点 Redux Performance
为了在 React 应用程序中获得最大的渲染性能,状态应该以规范化的形状存储,许多单独的组件应该连接到存储而不是仅仅几个,连接列表组件应该传递 item连接的子列表项的 ID(允许列表项通过 ID 查找自己的数据)。这最大限度地减少了要完成的渲染总量。使用记忆选择器函数也是一个重要的性能考虑因素。
关于Redux中的大状态对象
不可变的更新状态通常意味着制作浅拷贝,而不是深拷贝。浅拷贝比深拷贝快得多,因为需要复制的对象和字段更少,而且它实际上归结为移动一些指针。
但是,您确实需要为受影响的每个嵌套级别创建一个复制和更新的对象。虽然这不应该特别昂贵,但这是您应该尽可能保持状态正常化和浅层的另一个很好的理由。
正如@MatanHafuta 所说,状态对象的外观非常重要。
您可以使用像 normalizr 这样的包来规范化具有深度嵌套对象的 JSON 数据。
【讨论】:
这真的没关系,最终你拥有相同的数据,只要确保以一种易于检索和快速检索和操作的方式组织你的数据,而不是数量数据,但您以有效的方式组织数据的方式,还要考虑在 reducer 中更新状态的便利性,逻辑划分是在编写代码之前要考虑的事情。
【讨论】: