Angular 为什么markForCheck()只适用于一个分支?
很明显,我们需要使用markForCheck()主要是使用OnPush策略来标记组件以进行CD检查,但是 我想知道为什么只检查一个分支:Angular 为什么markForCheck()只适用于一个分支?,angular,angular-di,Angular,Angular Di,很明显,我们需要使用markForCheck()主要是使用OnPush策略来标记组件以进行CD检查,但是 我想知道为什么只检查一个分支: 为什么可以为整个应用程序运行CD或只运行特定组件,没有?感谢@yurzui@Toxicable@Maximus的评论,我了解到: 为什么不在每个组件上? 这就是onPush策略优化的想法:仅在必要时运行它 为什么是整个分支,而不是一个组件? 因为这就是CD的制作方式——它总是从根组件开始往下走。因此,如果要在特定组件上运行CD,则需要创建从根目录到该特定组件
为什么可以为整个应用程序运行CD或只运行特定组件,没有?感谢@yurzui@Toxicable@Maximus的评论,我了解到: 为什么不在每个组件上? 这就是onPush策略优化的想法:仅在必要时运行它 为什么是整个分支,而不是一个组件?
因为这就是CD的制作方式——它总是从根组件开始往下走。因此,如果要在特定组件上运行CD,则需要创建从根目录到该特定组件的所有路径如果要提高性能,为什么要为其他分支运行更改检测循环?我们打开了检查组件的路径,其中发生了更改。该组件的更改检测器Ref标记为检查,因为每个组件的变化检测器Ref独立于others@Toxicable查看在
markForCheck
期间执行的markParentViewsForCheck
功能,是否确定只标记该组件的cdRef进行检查?它将用OnPush
stategy@Toxicable,它不是独立的,它将为组件的所有子组件运行CDmarkForCheck
不运行更改检测,请参阅