angular - 我应该在 Ionic 3 中使用 ChangeDetectionStrategy OnPush
问题描述
有人应该ChangeDetectionStrategy.OnPush
与 Ionic 3 一起使用吗?
我习惯于在每个 Angular 应用程序中打开它。但是对于 Ionic,大多数组件在打开时都会停止正常工作OnPush
,比如选项卡和刷新器,然后我必须做一些黑客攻击并手动检测更改以使其正常工作。
在 Ionic 中使用它是一个好习惯吗?还是没有必要?
解决方案
抱歉,我认为您现在提出问题的方式有点奇怪(原因答案将是:“当然使用它,但要了解它的工作原理和作用,并知道何时值得这样做”)。
Ionic 3 在底层利用了 Angular,变化检测是 Angular 的“功能”。是否以高级方式使用 Ionic 3(与 Angular 相同)主要是特定应用程序上下文的问题:例如,如果您有一个大型项目,在许多组件中具有大量数据绑定并且存在性能问题=> 您绝对应该考虑将更改检测策略作为优化的一部分。
事实上,Ionic 团队构建的一些组件可能需要额外关注,并且它们可能不会“尊重”开箱即用的 CD(在许多情况下,这是因为它们使用可变值等,您必须自己将检查逻辑添加到 ngDoCheck 挂钩等),但是您始终可以检查来源并找出 CD 无法按预期工作的原因。如果您的应用程序对性能要求很高,那么在您自己的组件中执行 CD.onPush 具有切实的价值。
总而言之:
了解变更检测、它是如何工作的以及它何时有帮助对于一般的严重角度开发非常关键。
对于具有/将具有大量组件/绑定的应用程序,绝对应该考虑在适当的时候帮助优化性能。从一开始就考虑到未来的 CD 优化来编写此类应用程序是有意义的。
推荐阅读
- regex - 正则表达式 VBA
- javascript - 谷歌地图 getPlace().geometry 总是未定义
- reactjs - TypeError:无法读取未定义错误的属性“地图”
- laravel - 将我的信息保存在数据库中的 Laravel CRUD 问题
- sql - Sql 内存问题
- scala - 使用 spark 处理大量数据 (5TB)
- python - 在python中使用递归的星号倒金字塔
- concourse - 无法从 GUI 登录大厅
- amazon-web-services - 将输出变量从一个模块传递到另一个模块时出现 Terraform 错误
- mysql - 在单个查询中添加多个 where 子句