angular - 对于使用 ngrx 以状态存储的数组来说有多大?
问题描述
我有一个大约 4000 到 5000 个对象的数组,我需要在我的 Angular 应用程序的整个生命周期中使用它们。我在这个应用程序中使用 ngrx 进行状态管理,并使用 startWith 运算符的效果加载这些数据。我想知道对于以这种方式加载和存储状态的对象数组来说太大了。
解决方案
这实际上取决于您的阵列中有什么,以及您打算用它做什么。在对您的应用程序产生任何影响之前,数组本身可以包含很多值。
但如果你有一个包含大量值的数组,我的建议是:
- 不要一次显示所有项目,使用您可以在那里找到的分页或无限滚动解决方案(例如,Material CDK 中有一个通用的解决方案!)。这将是您可能遇到的最大问题之一:在视图中显示太多
- 如果您知道必须在数组中进行搜索,请尝试在收到数组后立即为您的搜索建立索引,而不是每次搜索更改时。例如,如果您有一组用户,并且您知道您的 UI 有“仅显示 +18 岁的人”,那么您可以创建一个
Set
包含所有这些人(仅引用他们) - 保持你的数据不可变并使用基本的 Angular 功能:
trackBy
在你的列表中*ngFor
,还有 changeDetectionStrategy: ChangeDetectionStrategy.OnPush`
我已经尝试查看一个应用程序是否可以处理 10 万个项目,答案是肯定的,尽管有时它开始感觉有点反应迟钝。因此,根据上述信息,4 或 5k 应该都很好。
推荐阅读
- c# - FileSystemWatcher - 过滤以识别除匹配字符串的文件之外的所有文件
- javascript - 为什么我的 JavaScript 日期/时间对象存储为地图而不是 Cloud Firestore 中的时间戳?
- excel - 在 VBA 中引用命名范围
- c# - Web Api 属性路由与 POST 请求不匹配
- c++ - 使用全局 lua_State* 变量
- microsoft-graph-api - 实际工作示例代码或指南与实际工作代码 1. 验证 C# .net 核心控制台应用程序和 2. 调用?网络 API
- python - 如何在 csv 文件中表示嵌套值?我想将文件无缝加载到(嵌套)python 字典中
- azure-devops - 如果有人在 Azure devops 上@提及我,如何让 Microsoft Flow 在团队中通知我
- amazon-web-services - 如何使用 CloudFormation 中的 CodeBuild 指定 GitHub 访问令牌
- haskell - 为什么这个镜头功能需要类型签名?