2017-07-30 6 views
2

それは、我々は、私は1つのブランチのみをチェックする理由を把握しようとしているほとんどOnPush CDのチェックを行うために、コンポーネントをマークするための戦略が、markForCheck()が1つのブランチに対してのみ機能するのはなぜですか?

markForCheck()を使用する必要があることは明らかだ:

enter image description here

アプリ全体または特定のコンポーネントのみでCDを実行できるのはなぜですか? @yurzui @Toxicable @Maximusからのコメントへ

+0

パフォーマンスを向上させる場合、他のブランチに対して変更検出サイクルを実行する理由は何ですか?コンポーネントが変更されたことを確認するためのパスを開く – yurzui

+0

各コンポーネントのChange Detector Refは他のコンポーネントと独立しているため、そのコンポーネントのChange Detector Refのみがチェックされています – Toxicable

+1

@毒性 'markForCheck'中に実行される' markParentViewsForCheck' https://github.com/angular/angular/blob/4.3.x/packages/core/src/view/util.ts#L110-L118そのコンポーネントのcdRefだけがチェック用にマークされていますか?それは、現在のコンポーネントビューとその親のすべてを 'OnPush'ステートでチェックします。 – yurzui

答えて

0

おかげで、私はそれを理解しに来た:

なぜ各コンポーネントの?

これは、onPush戦略最適化のアイディアです。必要な場合にのみ実行してください。

1つのコンポーネントだけでなく、ブランチ全体がなぜですか?

CDはどのように作られているのですか?常にルートコンポーネントからダウンします。したがって、特定のコンポーネントでCDを実行する場合は、ルートからこの特定のコンポーネントまでのすべてのパスを作成する必要があります。

関連する問題