Discuz! Board

 找回密碼
 立即註冊
搜索
熱搜: 活動 交友 discuz
查看: 6|回復: 0

单向数据流和变化检测

[複製鏈接]

1

主題

1

帖子

5

積分

新手上路

Rank: 1

積分
5
發表於 17:51:39 | 顯示全部樓層 |閱讀模式
由于检查通过会影响性能,因此它仅在调试模式下进行。在生产模式下,Angular 不会检查周期。在这方面,必须在调试模式下发现并规避该错误。 防止循环 现在出现的问题是如何防止显示的异常。有两种策略:一种是简单的,另一种是正确的。简单的策略是应用程序欺骗 Angular 使其不识别循环。一种方法是使用超时,仅在检查完成后才触发事件:再次触发变化检测也有类似的效果。 即使这很简单,也不能改变实际问题:存在循环,并且对性能和可追溯性产生负面影响。 唯一正确的解决方案是在父组件中进行更改。实际上,应用程序没有理由首先将不正确的值传递给组件。实施这种重构并不总是那么容易。在许多情况下,将相应的代码部分外包给服务并在父组件中使用它是有意义的。 2. 推送 默认情况下,Angular 在更新属性绑定时会检查所有组件是否发生更改。


可能会出现性能问题,特别是如果有很多属性绑定并且必须经常检查它们的话。 解决这个问题 瑞士 电话号码 的方法是更改​​检测策略OnPush,可以像这样激活如果组件激活此模式,Angular 仅在某些情况下检查它的更改: 传递给组件的数据发生变化 异步管道通知组件绑定的可观察值已发布新值 用户在组件中触发UI事件 应用程序手动触发更改检测 第一点听起来比实际上更简单。在OnPush模式下,Angular仅检查传递值的对象引用是否发生变化。被叫时 所考虑的案例创建myOldFlight的浅表副本,并使用newDate更新日期值。由于这种方法不会改变(变异)原始对象,而是克隆它,所以我们在这里也讨论不可变。 3. 智能和转储组件 查看第一个代码示例中的FlightCardComponent,很明显它只是呈现数据并且不了解当前用例。这是所谓的哑组件。




这种愚蠢的组件有一个重要的特性:它们是可重用的。无论哪种用例需要呈现航班,应用程序都可以依赖FlightCardComponent。 当然,我们还需要控制用例、与服务以及后端通信的组件。此控件理想地将应用程序放置在每个用例的单个组件中。我们在这里讨论的是智能组件。在这里考虑的示例中,这称为FlightSearchComponent: 图 - 智能组件和哑组件交互 智能组件和哑组件协同工作 通常,智能组件位于组件树的较高位置,理想情况下它们下面只有哑组件。这种方法不仅可以实现可重用的哑组件,而且还具有其他优点:业务逻辑的控制被隔离在智能组件中,从而带来了更好的可追溯性。性能也可以得到改善,因为智能组件还负责服务器访问,因此还可以通过单个请求检索其哑组件的数据。 此外,智能组件和哑组件之间的一致分离可以防止循环。



回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

Archiver|手機版|自動贊助|z

GMT+8, 09:07 , Processed in 0.380122 second(s), 18 queries .

抗攻擊 by GameHost X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回復 返回頂部 返回列表
一粒米 | 中興米 | 論壇美工 | 設計 抗ddos | 天堂私服 | ddos | ddos | 防ddos | 防禦ddos | 防ddos主機 | 天堂美工 | 設計 防ddos主機 | 抗ddos主機 | 抗ddos | 抗ddos主機 | 抗攻擊論壇 | 天堂自動贊助 | 免費論壇 | 天堂私服 | 天堂123 | 台南清潔 | 天堂 | 天堂私服 | 免費論壇申請 | 抗ddos | 虛擬主機 | 實體主機 | vps | 網域註冊 | 抗攻擊遊戲主機 | ddos |