ngOnChange不停地开火,并申请不重新反应



我构建了一个名为"gw-response-tabs"的组件,该组件具有带有变量(navLinks(的输入,该变量是我想要显示的选项卡数组。当我像这样从 html 传递输入数据时:

<gw-responsive-tabs
[navLinks]="[{ label: 'PENDING', path: '/mentoring/manage/pending' },
{ label: 'CURRENT', path: '/mentoring/manage/pending' }]">
</gw-responsive-tabs>

然后一切都按预期工作,我可以看到 2 个选项卡。

如果我更改它并使用 getter 或函数发送相同的数据,那么 gw 响应选项卡组件的 ngOnChanges 会以非常高的频率不间断地触发,从那时起,chrome 没有响应。

get mentoringTabs(): Array<any> {
return [{ label: 'PENDING', path: '/mentoring/manage/pending' }, { label: 'CURRENT', path: '/mentoring/manage/pending' }];
}

和 html:

<gw-responsive-tabs [navLinks]="mentoringTabs"></gw-responsive-tabs>

有什么想法会导致这种现象吗?

这是因为更改检测默认策略,它每秒左右都会检查一次 无论返回对象的值是否更改,它都会重新呈现模板,因此每次重新渲染 html 时,它都会调用 get 方法,该方法每次调用时都会返回一个新对象,当 ngOnChanges 将其作为值作为新对象进行比较时,它现在在圈。

这是更改检测工作原理的链接 https://angular-2-training-book.rangle.io/handout/change-detection/angular_1_vs_angular_2.html

相关内容

  • 没有找到相关文章

最新更新