Ionic 4ページライフサイクル
4211 ワード
Ionic 4ページライフサイクル
この文書では、
Angularライフサイクル
イベント名
説明
コンポーネントが初期化されるとトリガーされます.このイベントは、メンバー変数を初期化し、一度だけ実行するサービスを呼び出すために使用できます.
ビューが破棄される前に呼び出され、
Ionicページライフサイクル
イベント名
説明
コンポーネントがビューにルーティングされ、アニメーションが開始される前にトリガーされます.
コンポーネントがビューにルーティングされ、アニメーションが完了するとトリガーされます.
コンポーネントがビューからルーティングされ、アニメーションの開始前にトリガーされます.
コンポーネントがビューからルーティングされ、アニメーションが完了するとトリガーされます.
Ionicはどのようにページの生命を処理します
アプリケーションパッケージが
1)古いページの状態(画面上のデータ、スクロール位置など)を維持できます.2)再作成する必要がないため、よりスムーズなページ変換を提供できます.
ページは、スタックを出たときにのみ
このような特殊な処理により、
ルーティングガード
これらの方法は
ルーティングガードは、あるルーティングに対して特定の操作を実行することができる.特定のインタフェースのクラスを実装することによって、
このガードを使用する場合は、ルーティング構成に追加する必要があります.
ルーティング・ガードに関する詳細については、
ライフサイクルごとのガイドライン
以下に、各ライフサイクルイベントの使用例についていくつかのヒントを示します. ionViewDidLeave:このイベントがトリガーされると、新しいページが完全にロードされます.したがって、ページの非表示時に実行する必要がある論理はすべてここに置くことができます. ngOnDestroy-
テキストリンクhttps://ionicframework.com/docs/angular/lifecycle
この文書では、
Ionic
およびAngular
を使用してアプリケーションを構築するページのライフサイクルについて主に説明します.Angularライフサイクル
Ionic
は、Angular
のライフサイクルをサポートします.Angular
の次の2つのライフサイクルが最も多く使用されています.イベント名
説明
ngOnInit
コンポーネントが初期化されるとトリガーされます.このイベントは、メンバー変数を初期化し、一度だけ実行するサービスを呼び出すために使用できます.
ngOnDestroy
ビューが破棄される前に呼び出され、
observables
の購読をキャンセルできます.Ionicページライフサイクル
Angular
ライフサイクルに加えて、Ionic Angular
は、以下のライフサイクルイベントを提供する.イベント名
説明
ionViewWillEnter
コンポーネントがビューにルーティングされ、アニメーションが開始される前にトリガーされます.
ionViewDidEnter
コンポーネントがビューにルーティングされ、アニメーションが完了するとトリガーされます.
ionViewWillLeave
コンポーネントがビューからルーティングされ、アニメーションの開始前にトリガーされます.
ionViewDidLeave
コンポーネントがビューからルーティングされ、アニメーションが完了するとトリガーされます.
ionViewWillEnter
とionViewDidEnter
の違いは、主にトリガのタイミングにあり、前者はngOnInit
以降のページアニメーションの前にトリガされ、後者はページアニメーションの後にトリガされる.ionViewWillLeave
およびionViewDidLeave
の場合、ionViewWillLeave
は、ページから離れたアニメーションの開始時にトリガーされ、ionViewDidLeave
は、新しいページionViewDidEnter
イベントのトリガー後に実行される.Ionicはどのようにページの生命を処理します
Ionic
は、<ion-router-outlet />
のAngular
を継承し、モバイルデバイスにより良い体験を提供するいくつかの追加機能を有する独自のルータ出口、すなわち<router-outlet />
を有する.アプリケーションパッケージが
<ion-router-outlet />
にある場合、Ionic
のルーティングはAngular
と少し異なる.新しいページに移動すると、Ionic
は古いページを既存のDOMに保持し、ビューを非表示にして新しいページを変換します.私たちがこのようにした理由は2つあります.1)古いページの状態(画面上のデータ、スクロール位置など)を維持できます.2)再作成する必要がないため、よりスムーズなページ変換を提供できます.
ページは、スタックを出たときにのみ
dom
から削除されます.たとえば、UI
の戻りボタンまたはブラウザ戻りボタンをクリックします.このような特殊な処理により、
ngOnInit
およびngOnDestroy
は、一部のページ切り替え時に実行されない場合がある.ngOnInit
は、ページの新規作成時にのみ実行され、他のページからそのページに戻った場合には実行されません.たとえば、タブインタフェースの各ページ間をナビゲートすると、各ページのngOnInit
メソッドのみが呼び出されますが、その後のアクセスでは呼び出されません.ngOnDestroy
は、ページがスタックから出たときにのみ起動します.ルーティングガード
Ionic3
において、2つの追加のライフサイクルイベントを使用して、ページionViewCanEnter
にアクセスできるタイミングと、ページionViewCanLeave
から離れるタイミングを制御することができる.これらは、許可されていないユーザーによってページが使用されないように保護し、フォームを記入するときなど、ユーザーが離れたくないときにページに保持するために使用できます.これらの方法は
Ionic4
で除去され、この部分の機能はAngular
のルーティングガードによって実現することができる.ルーティングガードは、あるルーティングに対して特定の操作を実行することができる.特定のインタフェースのクラスを実装することによって、
CanActivate
およびCanDeactivate
は、削除イベントionViewCanEnter
およびionViewCanLeave
と同じ機能を実装することができる.@Injectable()
export class AuthGuard implements CanActivate {
constructor(private authService: AuthService) {}
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
return this.authService.isAuthenticated();
}
}
このガードを使用する場合は、ルーティング構成に追加する必要があります.
{ path: 'settings', canActivate: [AuthGuard], loadChildren: '...', }
ルーティング・ガードに関する詳細については、
Angular
のルーティング・ガード・ドキュメントを参照してください.ライフサイクルごとのガイドライン
以下に、各ライフサイクルイベントの使用例についていくつかのヒントを示します.
ngOnInit
:コンポーネントを初期化し、サービスからデータをロードします.これらのデータは、後でアクセスするたびにリフレッシュする必要はありません.ionViewWillEnter
:ionViewWillEnter
は、ページにナビゲートするたびに呼び出されるため(初期化の有無にかかわらず)、ページに入るたびにリフレッシュする必要がある場合は、良いタイミングです.しかし、アニメーションのロード中にデータが戻ってくると、大量のDOM操作が開始され、不安定なアニメーションが発生する可能性があります.ionViewDidEnter
:ionViewWillEnter
にデータをロードしてパフォーマンスの問題が発生した場合、ionViewDidEnter
でデータ呼び出しを実行するように変更できます.ただし、このイベントは、ユーザーがページを表示するまでトリガーされないため、ロードインジケータまたはスケルトン画面を使用して、データ・ロードが完了した後にコンテンツが不自然に点滅しないようにする必要があります.ionViewWillLeave
:observables
のサブスクリプションなどのコードのクリーンアップをキャンセルするために使用できます.ngOnDestroy
は、現在のページから他のページに移動するとトリガーされない可能性があるため、クリーンアップ関連のコードをここに配置することができます.ionViewWillLeave
で消去したくないページロジックを消去します.テキストリンクhttps://ionicframework.com/docs/angular/lifecycle