- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在 ngFor 中使用“trackBy: index”是不是一个好习惯?
例如:
<li *ngFor="let error of fileErrors.value; trackBy : index;"> {{error}} </li>
在所有 *ngFor 中每次都需要使用 trackBy 来提高性能,否则我们可以忽略它。
如果我们忽略,那么默认情况下将使用什么迭代器实现?
最佳答案
Using every time trackBy is necessary in all *ngFor for performance improvement or we can ignore it.
首先,我想说的是,花时间进行微优化可能会浪费大量时间,并且最终不会产生真正的性能结果。通常最好将重点放在良好的编码实践/约定上,然后在开发周期结束时,当您可以正确识别瓶颈时,再转向性能。
但是,在 Angular 中处理大型集合时,最好使用 trackBy
。如果你不这样做,那么 Angular 需要删除所有与数据关联的 DOM 元素并重新创建它们。这意味着大量的 DOM 操作,尤其是在大型集合的情况下,而且正如我们所知,DOM 操作是昂贵的。
这让我们想到了您的问题:
Angular: Is using “trackBy: index” good practice?
答案是,视情况而定,并不是所有的 ngFor
指令都需要它。根据具体情况适当使用 trackBy
。如果您处理的是小型数据集合,那么您真的不会注意到太多性能提升,而且您将再次进行过早的优化,这可能不会产生任何显着的性能提升。
根据后续评论进行编辑:
What happen if we use in every *ngFor? Even if the collection is not so big?
使用 trackBy
将导致 Angular 跟踪根据唯一标识符添加或删除了哪些项目,并仅创建或销毁已更改的项目。如果您决定这样做,则可以在每个 ngFor
中使用 trackBy
。只是没有必要,而且性能提升在小型集合中可能可以忽略不计。
关于Angular:使用 "trackBy: index"是好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53853534/
我正在尝试将 async 管道与 *ngFor 一起使用,以显示异步获取的项目数组。 {{item.text}} ngOnInit() { // very simple h
我有一个 *ngFor用于 array 的指令对象,它们具有相当多的属性。 我要这个 *ngFor仅在更改其中三个属性时才更新,但根据 documentation在 TrackByFunction 上
我的组件有点像 {{user.emailId}}× trackBy 函数为 public
最近,当您没有在每个 *ngFor 上实现 trackBy 函数时,Angular styleguide-lint-extender“Codelyzer”会发出警告。我想知道为什么这会被视为一个问题。
当我阅读有关 ngFor 和 trackBy 的文档 ( https://angular.io/api/common/NgForOf ) 时,我以为我明白 Angular 只会在 trackBy 返回
我想通过传递属性名称来跟踪 ngFor 项目来创建一个唯一的 trackBy 指令,这是代码: import { NgForOf } from '@angular/common'; import {
我想用trackBy提高长列表的性能。此列表的数据在更改时应该是不可变的,并通过异步管道提供给模板。虽然我正在使用 trackBy功能,每次我发出新值时都会重新呈现整个列表。即使数组内的对象与相同的
我在我的 ngFor 中激活了 trackBy 并且我确认它被调用并且正在工作,但我仍然注意到 DOM 在我的浏览器中重新呈现,这导致行闪烁。这里发生了什么?在 Angular1 中,我可以在我的浏览
在 ngFor 中使用“trackBy: index”是不是一个好习惯? 例如: {{error}} 在所有 *ngFor 中每次都需要使用 trackBy 来提高性能,否则我们可以忽略它。 如果
trackBy 函数(例如在 ngFor 中)提供两个参数:index 和 item(来自被迭代的集合)。有没有办法将附加信息(作为参数?)传递给 trackBy 函数? 我的情况是,我可能会为我的组
我想使用 ngFor trackBy 索引。我找到了类似下面的方法 @Component({ selector: 'my-app', template: ` {{item
我真的不明白我应该从 trackBy 返回什么。根据我在网上看到的一些示例,我应该返回对象上某些属性的值。这样对吗?为什么要获取 index 作为参数? 例如,在下面的情况下: Component.c
我的印象是 trackBy 函数仅在尝试优化 *ngFor 的性能时使用,因此如果发生变化,DOM 不会待重建。 但是,最近,我遇到了一种情况,trackBy 实际上修复了错误的行为。 以此为例:ht
我有一个更大的项目,我有 4 个嵌套的 *ngFor。所以创作大约有 200 行,我认为分享不会有帮助,所以我会尽可能地解释它。问题 刷新对象后,元素被销毁并重新创建。这会导致性能问题(我只关心 0.
在 Angular 中,*ngFor 是否需要 trackBy 函数?看了几篇here , here , here , 和 here也就是说使用 trackBy 会提高性能并具有更好的内存管理。但我想
我想使用 cdk 拖放来重新排序 ngFor 列表,但是因为我不想在放置后为每个元素再次触发动画,所以我还想使用 trackby 问题是当我使用 trackby 时,拖动每次都会快速返回而不是停留在缩
这个问题在这里已经有了答案: function gets called several times (3 个回答) 2年前关闭。 我已经开始使用 trackBy对于一些 ngFor在我的应用程序中进行
我有一个项目,前端是通过@angular/cli: 1.1.3开发的。一切工作正常,直到我尝试在产品模式下编译项目(ng build -prod)。在我使用 *ngFor 指令和 trackBy to
我正在 Angular 2 中创建一个演示应用程序。但是在执行此操作时,我遇到了这个错误: core.umd.js:3491 EXCEPTION: Uncaught (in promise): Err
在下面的例子中: https://stackblitz.com/edit/track-by-reuse?file=src/app/app.component.ts 如果将列数从 4 更改为 3,则具有
我是一名优秀的程序员,十分优秀!