gpt4 book ai didi

arrays - ngFor 指令是否会在每次突变时重新渲染整个数组?

转载 作者:太空狗 更新时间:2023-10-29 16:57:58 26 4
gpt4 key购买 nike

假设我们有一组项目:

items = [
{ title: 'item 1'},
{ title: 'item 2'},
/* ... */
];

还有一个模板可以渲染这个数组:

<ul>
<li *ngFor="let item of items">{{item.title}}</li>
</ul>

如果我通过push/splice 添加/删除项目,angular2 会重新呈现整个数组,还是只会添加/删除相应项目的标记?如果它只更新,那么突变策略有什么不同——我应该更喜欢推送/拼接而不是数组替换吗?换句话说,这两种方法在渲染性能上是否等效:

/* 1: mutation */
this.items.push({ title: 'New Item' });

/* 2: replacement */
var newArray = this.items.slice();
newArray.push({ title: 'New Item' });

this.items = newArray;

最佳答案

除了 Gunter 的回答之外,如果您想知道您的 UI 的哪一部分被渲染/重新渲染,您可以使用 Chrome(甚至独立于任何库/框架):

  • 打开调试面板
  • 菜单(调试面板)/更多工具/渲染

然后您应该会看到以下面板:

enter image description here

打开 Paint Flashing 选项,让您的列表充满乐趣。
如果某个区域呈绿色闪烁,则表示它已被绘制(paint)/重新绘制(paint) 👍。

例如:如果您在 Gunter 的回答中使用 Plunkr:http://plnkr.co/edit/oNm5d4KwUjLpmmu4IM2K?p=preview并打开 Paint Flashing,向列表中添加一个项目,您会看到之前的项目不会闪烁。 (这意味着没有重绘)。

关于arrays - ngFor 指令是否会在每次突变时重新渲染整个数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42244690/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com