Angular での一方向データ フローの使用方法の詳細な説明

php中世界最好的语言
リリース: 2018-04-20 15:11:02
オリジナル
1700 人が閲覧しました

今回は、Angular での一方向データ フローの使用について詳しく説明します。Angular で一方向データ フローを使用する際の 注意事項 は何ですか?実際のケースを見てみましょう。

変更検出

Angular では、データは最上位のルート ノードから最後のリーフ ノードまで一方向に流れ、一方向ツリーを形成します。

Angular は、すべての非同期操作がモデルの変更を引き起こす可能性があると考えています。データ モデルの変更を引き起こすイベント ソースは次のとおりです:

  • イベント: click、mouseover、keyup...

  • Timers: setInterval、setTimeout

  • XHRs: Ajax (GET, POST...)

Angular は、非同期動作が検出されると、ゾーンをカプセル化し、非同期動作が検出されると、変更検出を実行します。

データ フローは一方向であるため、コンポーネントのデータ ソースは親コンポーネントからのみ渡すことができるため、Angular は検出コンポーネントを上から下に走査し、次の限り子コンポーネントを検出し続けることができます。親コンポーネントが検出されます。

angularjsと比較すると、双方向かつ無秩序なデータフローの方向により、データが安定するまで何度も変更検出が繰り返されるため、パフォーマンス上の問題が発生したり、データとviewが不整合な状態になる可能性がありますつまり、レンダリング プロセスが完了します。結果として得られるビューは、データの実際の状態を反映していません。

出力のレンダリング

データモデルの変更が検出され、コンポーネントを再レンダリングする必要がある場合、Angular はコンポーネントの新しいバージョンに対応する新しい DOM データ構造を生成する DOM 生成

関数 を実行します。ビューの。

Angular レンダリング プロセス中に、テンプレート

expressions が評価され、コンポーネント ツリー全体で lifecycle フックが呼び出されます。

注: 緑色のサインは複数回呼び出されます

ライフコールサイクル(緑色の有向線)から、ngAfterViewCheckedは、コンポーネントおよびサブコンポーネントビューの出力が完了したことを示します。次の例を見てください:

import {Component, AfterViewChecked} from '@angular/core';
import {Course} from "./course";
@Component({
 selector: 'app-root',
 template: `
 <p class="course">
  <span class="description">{{course.description}}</span>
 </p>
`})
export class AppComponent implements AfterViewChecked {
 course: Course = {
  id: 1,
  description: "Angular For Beginners"
 };
 ngAfterViewChecked() {
  this.course.description += Math.random();
 }
}
ログイン後にコピー
上記のコードは、角度変化検出サイクル中にエラーを引き起こします。コンポーネントは DOM データ構造の出力を完了し、コンポーネントの ngAfterViewChecked() メソッドのデータ状態も変更しました。これにより、ビューのレンダリング後にデータとビューの状態が一致しなくなります。

データはコンポーネント クラスからそれらを表す DOM データ構造に流れます。これらの DOM データ構造を生成する行為自体は、データのさらなる変更にはつながりません。ただし、ngAfterView ライフサイクル中にデータを変更するのは、Angular の「一方向データ フロー」ルールにより、ビューの作成後に更新することは禁止されています。

これは、データ モデルからビューまでのプロセスが一方向であり、ビューの後にデータ フローを変更できないことを意味します。

概要

変更検出プロセスとレンダリング出力プロセスから、次のように要約できます。

一方向データ フローは、コンポーネント ツリーの最上部からコンポーネント ツリーの最下部までのアプリケーション データ フローを指します。レンダリングスキャン処理→レンダリング処理 処理で生成されたDOMデータ構造を出力する処理。

この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。

推奨読書:

vue はサーバーへのリクエスト数の削減を実装します

JSON を使用してサーバーにデータを送信する手順の詳細な説明

vue がキャッシュを使用する方法

以上がAngular での一方向データ フローの使用方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!