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 のインストールに関するチュートリアル

推薦する

Vue.js パフォーマンス最適化 N 個のヒント (収集する価値あり)

目次機能コンポーネント子コンポーネントの分割ローカル変数v-show によるDOMの再利用キープアラ...

Windows Server 2016 に Docker をインストールするプロセスと発生した問題

前提条件Windows Server でコンテナーを実行するには、Windows Server (半...

MySQL で URL タイムゾーンの罠を回避する方法

序文最近、MySQL 6.0.x 以降の jar を使用する場合、コード URL リンクで serv...

MySQL 学習: データベース テーブルの 5 つの主要な制約を初心者向けに詳しく説明します

目次1. 制約の概念と分類2. 5つの制約の追加と削除2.1 制約を追加する6つの方法2.2 制約を...

ORM を使用して MySQL にデータを追加する手順

【序文】 ORM を使用してデータベース内のデータを操作する場合、前提として、新しい ORM モデル...

axios を使用してプロジェクト内の複数の繰り返しリクエストをフィルタリングする方法

目次1. はじめに:この場合、通常は 2 つのアプローチがあります。 2. CancelToken ...

vue3 でブロック崩しゲームを開発する方法をステップバイステップで教えます

序文vue3 を使った例をいくつか書いてみましたが、Vue3 のコンポジション API はよく設計さ...

CSS の flex と inline-flex の違いの詳細な説明

inline-flex は inline-block と同じです。内部要素用の display:fl...

JavaScript を使用して簡単なアルゴリズムを実行する方法

目次質問1件2つの方法3 実験結果と考察質問1件ご存知のとおり、 Pycharm 、 IDLE 、 ...

JDカルーセル効果を実現するための純粋なHTMLとCSS

JD カルーセルは、動的な効果を追加せず、主に位置決めの知識を使用して、純粋な HTML と CS...

Nginx の負荷分散構成、ダウンタイム発生時の自動切り替えモード

厳密に言えば、nginx には負荷分散バックエンド ノードのヘルス チェック機能はありませんが、デフ...

Vue 天気予報入門

この記事では、参考までに天気予報を実装するためのVueの具体的なコードを紹介します。具体的な内容は次...

CentOS 7.6 仮想ネットワーク カードのバッチ追加、変更、削除操作の紹介

1 カーネルにtunモジュールがあるかどうかを確認する modinfo tun modprobe t...

MySQL 5.7 JSON 型の使用の詳細

JSON は、言語に依存しないテキスト形式を使用する軽量のデータ交換形式で、XML に似ていますが、...

HTML 順序なしリスト 箇条書き 画像を使用した CSS の記述

少なくとも 5 冊のベストセラー書籍の順序なしリストを含む HTML ページを作成します。各書籍の前...