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

推薦する

JavaScript ではおそらく switch 文を使う必要はない

目次スイッチも複雑なコードブロックもありませんPythonからのインスピレーション辞書を使用してスイ...

n 個のコンテナ要素による無限スクロールの実装コード

シナリオ最大 10000 要素のリストを正しくレンダリングする方法。無限ドロップダウン読み込みテクノ...

ホワイトボードを踏まないようにするゲームを実装するための HTML+CSS+JS

目次背景1. 思考分析2. ページ構成2.1 HTML レイヤー2.2 CSS レイヤー2.3 JS...

CSSでカスタムフォント(font-face)を導入する方法の詳細な説明

なぜこれを使ったのか?それはポスターを作ることから始まりました。それは嵐の夜でした。 。 。さて、無...

Node.js+expressメッセージボード機能実装例

目次メッセージボード必要なライブラリオープンソースプロジェクトプロジェクト構造メッセージボードnod...

露滴アニメーション効果を実装するための Three.js サンプル コード

序文みなさんこんにちは。CSS ウィザードの alphardex です。この記事では、three.j...

vue3 のストアを使用してスクロール位置を記録する例

目次全体的な効果コンテナのスクロールイベントをリッスンするストア内の構成ページが戻るときのスクロール...

Enterキーを押すとフォームが自動的に送信されます。予期せぬ発見

コードをコピーコードは次のとおりです。 <!DOCTYPE html> <html...

HTML コードを書くための 30 のヒント

1. HTMLタグは常に閉じる前のページのソース コードでは、次のような記述がよく見られます。 &l...

Navicat の MySQL へのリモート接続の実装手順の分析

序文皆さんはリモート サーバーで開発を行っており、MySQL の使用率はかなり高いはずです。コマンド...

Vue+elementuiはドロップダウンテーブルの複数選択と検索機能を実現します

この記事では、ドロップダウンテーブルの複数選択と検索を実現するためのvue+elementuiの具体...

Centos7.x での Nginx のインストール、SSL 設定、一般的なコマンドの詳細な説明

1. インストールyumを使用してインストールする ##yum nginx を自動的にインストールす...

MySqlは、外部ネットワーク接続クライアントの低速問題を解決するためにskip-name-resolveを使用します。

Tencent Cloud上に構築されたMySQLは、開発用コンピュータでNavicatを使用して...

MongoDB の起動エラーを解決します: 共有ライブラリのロード中にエラーが発生しました: libstdc++.so.6: 共有オブジェクト ファイルを開けません:

MongoDB を起動すると、プロンプトは次のようになります。共有ライブラリのロード中にエラーが発...

CSS 背景と境界タグの例の詳細な説明

1. CSS背景タグ1.背景色を設定するbackground-ground-color プロパティは...