Angular如何利用trackBy提升性能详解
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Angular如何利用trackBy提升性能详解,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1520字,纯文字阅读大概需要3分钟。
内容图文
![Angular如何利用trackBy提升性能详解](/upload/InfoBanner/zyjiaocheng/140/e209c4c7362c4219a44a69c58466ed69.jpg)
在Angular的模板中遍历一个集合(collection)的时候你会这样写:
<ul> <li *ngFor="let item of collection">{{item.id}}</li> </ul>
有时你会需要改变这个集合,比如从后端接口返回了新的数据。那么问题来了,Angular不知道怎么跟踪这个集合里面的项,不知道哪些该添加哪些该修改哪些该删除。结果就是,Angular会把该集合里的项全部移除然后重新添加。就像这样:
这样做的弊端是会进行大量的DOM操作,而DOM操作是非常消耗性能的。
那么解决方案是,为*ngFor添加一个trackBy函数,告诉Angular该怎么跟踪集合的各项。trackBy函数需要两个参数,第一个是当前项的index,第二个是当前项,并返回一个唯一的标识,就像这样:
import{ Component } from '@angular/core'; @Component({ selector: 'trackBy-test', template: ` <ul><li *ngFor="let item of items; trackBy: trackByIndex">{{item.name}}</li></ul> <button (click)="getItems()">Get Items</button> ` }) export class TrackByCmp{ items: any[]=[]; constructor(){ this.items = [{name:'Tom'},{name:'Jerry'},{name:'Kitty'}]; } getItems(){ this.items = [{name:'Tom'},{name:'Jerry'},{name:'Mac'},{name:'John'}]; } trackByIndex(index, item){ return index; } }
这样做之后,Angular就知道哪些项变动了:
我们可以看到,DOM只重绘了修改和增加的项。而且,再次点击按钮是不会重绘的。但是在没有添加trackBy函数的时候,重复点击按钮还是会触发重绘的(可以回头看第一个GIF)。
相关推荐:
PHP通过opcache提升性能
PHP编程习惯 提高PHP编程效率 引入缓存机制提升性能
提高PHP编程效率 引入缓存机制提升性能_PHP教程
以上就是Angular如何利用trackBy提升性能详解的详细内容,更多请关注Gxl网其它相关文章!
内容总结
以上是互联网集市为您收集整理的Angular如何利用trackBy提升性能详解全部内容,希望文章能够帮你解决Angular如何利用trackBy提升性能详解所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。