【发布时间】:2019-06-29 08:15:12
【问题描述】:
我有一个组件中的项目列表:
list: Array<MyType>;
用户可以在点击时选择和取消选择元素:
toggleItem(item: MyType) {
if (this.selection.has(item)) {
this.selection.delete(item);
return;
}
this.selection.add(item);
}
所选项目存储在Set:
selected: Set<MyType> = new Set();
现在我需要切换一个 CSS 类和一个 title-attribute,这取决于一个元素是否被选中:
<button class="toggle"
type="button"
[ngClass]="{'selected': selection.has(item)}"
[title]="selection.has(item) ? 'Select' : 'Deselect'"
(click)="toggleItem(item)">
{{ item.title }}
</button>
现在我在某处读到,评估函数调用是一个坏主意,因为 Angular 会定期调用它们进行更改检测,如下所示:
[ngClass]="{'selected': selection.has(item)}"
他们说最好检查变量或对象的成员,例如:
[ngClass]="{'selected': item.selected}"
这是真的,它是否会降低我目前使用它的方式的性能?我是否应该为在 Set 中添加或删除时设置的每个项目添加一个属性?
【问题讨论】:
-
运行基准测试时会发生什么?
标签: javascript angular typescript performance angular8