面试题答案
一键面试- 原理阐述:
- 在Angular中,当使用
ngFor
指令遍历数组展示列表时,如果数组发生变化(如添加、删除、重新排序等),Angular默认会重新渲染整个列表。而trackBy
函数可以给每个列表项设置一个唯一标识,这样Angular就能通过对比这个唯一标识来判断哪些列表项真正发生了变化,只重新渲染变化的部分,从而优化性能。 - 当使用
trackBy
函数时,Angular会在每次渲染列表时调用该函数,传入当前索引和当前项,函数返回一个唯一标识供Angular追踪。
- 在Angular中,当使用
- 代码示例:
- 假设我们有一个组件,组件类中定义了一个数组和
trackBy
函数:
- 假设我们有一个组件,组件类中定义了一个数组和
import { Component } from '@angular/core';
@Component({
selector: 'app - my - list',
templateUrl: './my - list.component.html',
styleUrls: ['./my - list.component.css']
})
export class MyListComponent {
items = [
{ id: 1, name: 'item1' },
{ id: 2, name: 'item2' },
{ id: 3, name: 'item3' }
];
trackById(index: number, item: any) {
return item.id;
}
}
- 在模板文件(
my - list.component.html
)中使用ngFor
和trackBy
:
<ul>
<li *ngFor="let item of items; trackBy: trackById">{{item.name}}</li>
</ul>
在上述代码中,trackById
函数返回每个对象的id
属性作为唯一标识。这样在数组发生变化时,Angular能通过id
准确判断哪些列表项需要更新,提高渲染效率。