AngularとIonicのライフサイクルとフック関数を素早く理解するための記事

AngularとIonicのライフサイクルとフック関数を素早く理解するための記事

角度

成し遂げる

まず、実装方法についてはあまり言う必要はありません。フック関数を使用するには、定義時に対応するインターフェースを実装する必要があります。

エクスポートクラスListPageはOnInitを実装します{
  コンストラクタ() {}

  ngOnInit() {
    // ここにコード
  }
}

呼び出し順序

1.コンストラクタ

最初に実行されるのはコンストラクタです。コンストラクタ実行時には、@Input や @ViewChild などの多くの変数は存在しません。関連する操作は ngOnInit に記述するのがベストです。

2. 変更時

現在のコンポーネント @Input/@Output のバインディング値が変更されたときにトリガーされます。
さらに、@Input がオブジェクトの場合、参照が変更された場合にのみトリガーされます。

3. ngOnInit

最初の ngOnChanges が完了した後に呼び出されます。1 回だけ実行されます。

4. ngDoCheck

開発者が定義した変更検出。

5. ngAfterContentInit

コンポーネントコンテンツが初期化されるときに1回実行される

6. ngAfterContentChecked

コンポーネントに投影されたコンテンツは、ngDoCheck 呼び出しごとにトリガーされます。

7. ngAfterViewInit

コンポーネントとそのサブコンポーネントビューが初期化されるときに一度実行されます。

8. ngAfterViewChecked

コンポーネントとその子ビューでの各 ngDoCheck 呼び出しの後に発生します。

9. ngOnDestroy

コンポーネントが破棄される前に呼び出されます。

知らせ

  • コンストラクタにすべてのデータが存在するわけではなく、@ViewChild @ViewChildren @Inputなどの値はまだバインドされていません
  • 変更が検出されると ngDoCheck がトリガーされます。パフォーマンスに非常に負荷がかかるため、注意して使用してください。

イオニック

上記のリンクをクリックすると元の文書が表示されます。重要なポイントを強調します。

ライフサイクルは図に示されています。Angular が提供するライフサイクルに加えて、Ionic はいくつかのイベントを追加します。

  • ionViewWillEnter ルーティングコンポーネントがビューに表示されようとしています
  • ionViewDidEnter ルートコンポーネントがビューに表示されました

ionViewWillEnterはngOnInitの後にトリガーされ、ionViewDidEnterはページ切り替えの遷移効果が終了した後にトリガーされます。

  • ionViewWillLeave 現在のルートを離れようとしているコンポーネント
  • ionViewDidLeave 現在のルートを離れたコンポーネント

ionViewWillLeave が最初に呼び出され、新しいページへの遷移が成功するまで (新しいページの ionViewDidEnter がトリガーされた後)、ionViewDidLeave は呼び出されません。

ion-nav または ion-router-outlet を使用するコンポーネントは、OnPush 変更検出戦略を使用しないでください。これにより、ngOnInit などのライフサイクル フックがトリガーされなくなります。さらに、非同期に変更されたデータは正しくレンダリングされない可能性があります。

ionic はページのライフサイクルをどのように処理しますか?

ionic で使用されるルーティング アウトレットは <ion-router-outlet /> です。これは Angular の <router-outlet /> を拡張し、モバイル デバイスでより優れたエクスペリエンスを提供できます。

あるページから新しいページにジャンプすると、Ionic は古いページを DOM に保存し、表示しないようにします。これにより、スクロール位置やページデータなど、前のページの状態を維持できるため、新しいページから前のページに戻るときに再読み込みする必要がなく、ページ遷移がよりスムーズになります。

ページはスタックから抜けたときにのみ破棄されるため、ngOnInit と ngOnDestroy がトリガーされるタイミングは想像どおりにならない可能性があります。

たとえば、A は詳細ページで、データを変更するにはページ B に移動します。変更が完了したら、ページ B からページ A に戻ります。
ページ A のデータ取得メソッドが ngOnInit に記述されている場合、B から A に戻るときに ngOnInit はトリガーされず、明らかにビジネス要件を満たしません。
したがって、このデータの取得はionViewWillEnterに記述することができ、BからAに戻るときにトリガーされ更新される。

ルートガード

Ionic 3 には、ページに入る/離れることができるかどうかを判断するために使用する ionViewCanEnter と ionViewCanLeave という 2 つのフック関数がありました。これらは通常、アクセス権を制限したり、編集ページを離れる前に 2 次確認プロンプトをポップアップ表示したりするために使用されていました。これら 2 つの関数は非推奨になりました。Ionic 4 以降では、Angular の公式ルーティング ガードを使用します。

要約する

Angular と Ionic のライフサイクルとフック関数に関するこの記事はこれで終わりです。Angular Ionic のライフサイクルとフック関数に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Angular2ライフサイクルフック関数の詳細な紹介
  • Angular4のライフサイクルフックについての簡単な説明
  • Angularのライフサイクルフックの理解に関する簡単な説明
  • Angular2コンポーネントのライフサイクルフックについての簡単な説明

<<:  Linuxでバージョン情報を表示する方法

>>:  Linux での MongoDB のインストールに関するチュートリアル

推薦する

CSS3でハートを描く

成果を達成する要件/機能: CSS + HTML を使用してハートを描く方法。分析:正方形と 2 つ...

Innodb で MySQL の 2T テーブルをすばやく削除する方法の例

序文この記事は主に、MySQL の Innodb で 2T の大きなテーブルをすばやく削除する方法に...

怖いハロウィーン Linux コマンド

ハロウィーンではありませんが、Linux の不気味な側面に注目する価値はあります。幽霊、魔女、ゾンビ...

Nginx tp3.2.3 404 問題の解決

最近、Apache を nginx に変更しました。TP プロジェクトを実行に移すと、404 エラー...

Docker で既存のイメージに基づいて新しいイメージを構築する方法

既存のイメージから新しいイメージを構築することは、Dockerfile ドキュメントを通じて行われま...

Centos8で静的IPを設定する方法の詳細な説明

CentOS 8をインストールした後、ネットワークを再起動すると次のエラーが表示されますエラーメッセ...

Reactでレシピシステムを実装する方法を解説した記事

目次1. レシピ集1.1 プロジェクトの背景1.2 テクノロジースタック1.3 開発環境1.4. プ...

vueはel-tableの列幅の適応を完璧に実現します

目次背景技術的ソリューション具体的な実装要約する背景Element UI は、PC で人気の Vue...

シンプルな計算機を実装する JavaScript コード

この記事では、参考までに、簡単な計算機を実装するためのJavaScriptの具体的なコードを紹介しま...

ウェブデザインを改善するための 8 つの CSS ツールを共有する

ウェブサイトのデザインを編集または変更する必要がある場合、CSS が重要な役割を果たします。 CSS...

MySQL IFNULL判定問題の解決方法

問題: mybatis によって返される null 型のデータが消え、フロントエンドの表示にエラーが...

MySQL 8.0.19 では、間違ったパスワードを 3 回入力するとアカウントがロックされるようになりました (例)

MySQL 8.0.19 では、間違ったパスワードを 3 回入力するとアカウントがロックされるよう...

js での遅延読み込みとプリロードの具体的な使用法

遅延読み込み(レイジー読み込み)とプリロードは、Web 最適化によく使用される手段です。 。 1. ...

Ant Design Blazor コンポーネントライブラリのルーティング再利用マルチタブ機能

最近、Ant Design Blazor コンポーネント ライブラリにマルチタブ コンポーネントを実...

nginx の default_server 定義とマッチングルールの詳細な説明

nginx の default_server ディレクティブは、server_name と一致しない...