首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该在无区域角度应用中使用onPush吗?

我应该在无区域角度应用中使用onPush吗?
EN

Stack Overflow用户
提问于 2022-09-22 06:42:59
回答 1查看 51关注 0票数 -1

如果禁用角应用程序中的zonejs,是否仍然需要将组件设置为OnPush以提高性能?

EN

回答 1

Stack Overflow用户

发布于 2022-09-22 08:55:48

禁用zoneJS意味着组件与整个应用程序的更改检测隔离。ZoneJS内部与ZoneJS一起工作,以检测何时更新UI。

通过禁用zoneJS,可以禁用所有内部发射器。

因为它是一个非常特殊的用例,您应该自己检查一下:首先,尝试添加公共生命周期挂钩,看看它们是否仍然触发。这些是ngOnInitngAfterViewInit等。

在它们里面放一个console.log,如果它触发了,那就意味着应用程序的某些部分仍然会被触发(这很好)。

接下来,尝试使用ngDoCheck:这个生命周期钩子在每次必须更新UI时都会触发。通过将一个console.log放入其中,您将能够看到触发更改检测的次数。如果它对您的口味来说太多了,那么是的,您可能需要将onPush添加到您的组件中。如果不是,那你应该做得很好!

我还建议尝试一下async管道,因为它是最常用的管道之一,在我看来,在每个可观察到的地方添加一个tap(() => this.cdRef.detectChanges())是非常糟糕的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73810359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档