【发布时间】:2018-11-18 11:29:36
【问题描述】:
我只是检查 trackBy 选项的 *ngFor 。在互联网上可用的大多数示例中,它表明如果您默认不使用trackBy 选项,它会重新渲染整个DOM。例如,如果我们有一个表和 3 行,它们是用ngFor 生成的,在添加另一行之后,在控制台中您可以看到所有 4 行都重新生成了。如果您使用trackBy,它只会渲染第 4 行,而前 3 行将保持原样。
但令人困惑的部分出现在这里。我尝试使用 Angular 4 重现带有表行的示例,并且当我尝试仅使用 ngFor 添加新行(不使用 trackBy)时,它神奇地不会为我重新渲染整个 DOM,而是完全重新- 只渲染最后一行。如果我添加 trackBy 函数,它不会改变重新渲染 DOM 的方式。
只是想知道,如果他们在某个时间点更新了它,现在ngFor 更有效率,还是我遗漏了什么?
示例代码:https://stackblitz.com/edit/angular-igjyci?file=src%2Fapp%2Fapp.component.html
示例 gif:GIF in action
【问题讨论】:
-
在此处添加一些代码。
-
将添加示例 gif,您可以在一分钟内看到它的动作和代码。
-
添加了 gif 和示例代码。如您所见,控制台显示 DOM 上唯一更改的是添加的新行。而且代码没有trackBy。
标签: javascript angular performance