当前位置: 首页 > news >正文

网页与网站设计说明wordpress 登录弹窗

网页与网站设计说明,wordpress 登录弹窗,it之家网站源码,微商城和小程序区别trackBy是angualr优化项目性能的一种方法, 通过返回一个具有绑定性的唯一值, 比如id,手机号,身份证号之类的,来让angular能够跟踪数组的项目,根据数据的变化来重新生成DOM, 这样就节约了性能。 但是如果是使用ngFor循环组件&…

trackBy是angualr优化项目性能的一种方法, 通过返回一个具有绑定性的唯一值, 比如id,手机号,身份证号之类的,来让angular能够跟踪数组的项目,根据数据的变化来重新生成DOM, 这样就节约了性能。

但是如果是使用ngFor循环组件,添加trackBy的时候就需要注意这个组件自身的数据更新机制是否正常,因为没有使用trackBy的时候,for循环的数组数据改变了,angular会把数组里所有的项目都重新生成,那些项目的组件也都会重新初始化。

但当你使用了trackBy,数据发生了变化,angular只会把那些数据有变化的项目重新生成,这样项目的组件也不会重新初始化,如果这个组件的数据更新机制不够好,这时就会因为数据更新的问题,产生bug。

接下来我用一个例子来演示一下

这是子组件test

import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';@Component({selector: 'app-test',templateUrl: './test.component.html',styleUrls: ['./test.component.css']
})
export class TestComponent implements OnChanges {@Input() data: any;name: string;age: number;married: boolean;constructor() {}ngOnChanges(changes: SimpleChanges): void {if (changes.data?.currentValue) {this.init(changes.data?.currentValue);}}init(data) {this.name = data.name;this.age = data.age;this.married = this.married !== undefined ? this.married : data.married;}
}
<div><div>姓名: {{ name }} </div><div>年龄: {{ age }}</div><div>婚否: {{ married ? '已婚' : '未婚' }}</div>
</div>

这是父组件app

import { Component } from '@angular/core';@Component({selector: 'app-root',templateUrl: './app.component.html',styleUrls: ['./app.component.css']
})
export class AppComponent {itemArray = [{id: 1,data: {name: '张三',age: 24,married: true}},{id: 2,data: {name: '李四',age: 25,married: true}},{id: 1,data: {name: '王五',age: 26,married: false}},];constructor() { }changeData() {this.itemArray = [{id: 1,data: {name: '张三',age: 24,married: false}},{id: 2,data: {name: '李四',age: 25,married: true}},{id: 1,data: {name: '王五',age: 26,married: true}},];}}
<div><div *ngFor="let item of itemArray;"><app-test [data]="item.data"></app-test>------------------------------</div><button (click)="changeData()">changeData</button>
</div>

我在这里循环一个数组,显示人物的资料,姓名,年龄,婚否。

接下来我改变一下数据,调用一下changeData,把张三变成未婚,王五变成已婚

数据正常更新了,这是没有加trackBy的时候,现在添加一下trackBy

trackByFn(index: number, item: any) {return item.id;}
<div><div *ngFor="let item of itemArray; trackBy: trackByFn;"><app-test [data]="item.data"></app-test>------------------------------</div><button (click)="changeData()">changeData</button>
</div>

点击changeData

组件没有重新生成,数据也没有更新,这是因为test组件的更新机制有问题

他这里是以组件本身的数据为先,这样的话,即使上面传下来新数据,他也不会更新,除非重新初始化,而加个trackBy之后,组件就不会重新生成,所以没加trackBy之前,没有bug,加了就有bug。

所以,要使用trackBy,组件本身的数据更新机制要正常才行。

http://www.yayakq.cn/news/582854/

相关文章:

  • 网站企业建设公司排名专业设计公司vi设计
  • 衡水网站seo钢材公司网站建设
  • 查询网站备案号wordpress支持支付宝
  • 求推荐个网站临沂企业网站开发官网
  • 如何写一份网站优化建设的方案整个世界
  • 一家做特卖的网站叫什么网站建设案例收费情况
  • wordpress 评论 瀑布新网站关键词怎么优化
  • 98建筑网站雁塔区住房和城乡建设局网站
  • 企业注册网站网站建设北京市
  • 大沥九江网站制作wordpress绝对路径
  • 做电商要注册网站吗上海网站快速排名提升
  • 建设项目环评验收网站婚礼礼服网站界面设计
  • 数码庄园的网站建设公司海南网站制做的公司
  • 咸阳高端网站建设成品网站源码1688自动跳转
  • 中国新农村建设网站投稿西安今天紧急通知最新
  • 旅游网站开发背景及意义今天北京发生的重大新闻
  • p2p网贷网站开发张掖网站设计公司
  • 城镇建设部网站电子商务网站建设与管理的考试
  • 如何给网站备案wordpress 哪个版本
  • 用手机可以做网站广告设计经典108例
  • 广东省住房和城乡建设局网站首页游学做的好的网站
  • 前端开发工程师招聘要求昆明做网站seo的
  • 手机网站无法访问的解决方法多城市分站网站建设
  • 建设网站一般多钱吃什么补肾吗
  • 自己建网站好还是用淘宝做好服务器网站打开慢
  • 织梦行业网站模板做游戏网站多钱
  • 地方网站如何做做旅游网站多少钱
  • 陕西省建设网站 五大员过期做如美团式网站要多少钱
  • 营销自己的网站国外开源代码网站
  • 湘潭手机网站金寨县建设规划局网站