角利用trackBy提升性能的方法

  

在角的模板中遍历一个集合(集合)的时候你会这样写:

        & lt; ul>   & lt;李* ngFor=叭檬占钅俊痹趝{item.id}} & lt;/li>   & lt;/ul>      

有时你会需要改变这个集合,比如从后端接口返回了新的数据,那么问题来了,角不知道怎么跟踪这个集合里面的项,不知道哪些该添加哪些该修改哪些该删除。结果就是,角会把该集合里的项全部移除然后重新添加。就像这样:

  

角利用trackBy提升性能的方法”> <br/>
  </p>
  <p>这样做的弊端是会进行大量的DOM操作,而DOM操作是非常消耗性能的。<br/>
  </p>
  <p>那么解决方案是,为* ngFor添加一个trackBy函数,告诉角该怎么跟踪集合的各项.trackBy函数需要两个参数,第一个是当前项的指数,第二个是当前项,并返回一个唯一的标识,就像这样:</p>
  
  <pre类=   从“@angular进口{组件}/核心”;      @ component ({   选择器:“trackBy-test”,   模板:   & lt; ul> & lt;李* ngFor=叭梦锲返奈锲?trackBy: trackByIndex”在{{item.name}} & lt;/li> & lt;/ul>   & lt;按钮(点击)=" getItems()在得到Items   ”   })   出口类TrackByCmp {   项目:任何[]=[];   构造函数(){   这一点。项=[{名称:“汤姆”},{名称:“杰瑞”},{名称:“凯蒂”});   }   getItems () {   这一点。项=[{名称:“汤姆”},{名称:“杰瑞”},{名称:“Mac”},{名称:“约翰”});   }   trackByIndex(指数项){   返回索引;   }   }      

这样做之后,角就知道哪些项变动了:

  

角利用trackBy提升性能的方法”> <br/>
  </p>
  <p>我们可以看的到,DOM只重绘了修改和增加的项,而且,再次点击按钮是不会重绘的。但是在没有添加trackBy函数的时候,重复点击按钮还是会触发重绘的(可以回头看第一个GIF)。</p>
  <p>以上所述是小编给大家介绍的角利用trackBy提升性能的方法,希望对大家有所帮助,如果大家有任何疑问请给我留的言,小编会及时回复大家的。在此也非常感谢大家对网站的支持! </p><h2 class=角利用trackBy提升性能的方法