この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

表示ライフサイクル中に起動されたイベント

コンポーネントはそのライフサイクルの間にインスタンス化され、表示され、さらに再表示されます。コンポーネントが再表示されるのは、プログラムまたは値が変更されて再表示が必要になった場合のみです。たとえば、ブラウザイベントがアクションをトリガしてデータが更新された場合などです。

コンポーネントの作成

コンポーネントのライフサイクルは、クライアントが HTTP 要求をサーバに送信し、コンポーネント設定データがクライアントに返されると開始します。以前の要求によってコンポーネント定義がすでにクライアント側にあり、コンポーネントにサーバとの連動関係がない場合は、このサーバとの往復のやりとりは行われません。

ネストされたいくつかのコンポーネントを含むアプリケーションを見てみましょう。フレームワークは、アプリケーションをインスタンス化し、v.body facet の子を通って、各コンポーネントを作成します。まず、コンポーネント定義とその親階層全体を作成してから、コンポーネント内で facet を作成します。また、属性、インターフェース、コントローラ、アクションの定義を含め、すべてのコンポーネントの連動関係もサーバに作成します。

コンポーネントインスタンスが作成されると、逐次化されたコンポーネント定義とインスタンスがクライアントに送信されます。定義はキャッシュされますが、インスタンスデータはキャッシュされません。クライアントは、応答の逐次化を解除して JavaScript オブジェクトまたは対応付けを作成します。その結果、コンポーネントインスタンスの表示に使用するインスタンスツリーが作成されます。コンポーネントツリーの準備が整うと、すべてのコンポーネントに対して init イベントが起動されます。起動は、子コンポーネントから開始し、親コンポーネントで終了します。

コンポーネントの表示

  1. init イベントは、コンポーネントを構成するコンポーネントサービスによって起動され、初期化が完了したこと通知します。
    1<aura:handler name="init" value="{!this}" action="{!c.doInit}"/>
    コンポーネントの表示が開始される前に、init ハンドラをカスタマイズして、独自のコントローラロジックを追加できます。詳細は、「コンポーネントの初期化時のアクションの呼び出し」 を参照してください。
  2. ツリーのコンポーネントごとに、render() の基本実装またはカスタムレンダラがコールされ、コンポーネントの表示が開始されます。詳細は、「DOM へのクライアント側表示」 を参照してください。コンポーネントの作成プロセスと同様に、表示はルートコンポーネントで開始され、子コンポーネントとスーパーコンポーネントの順に処理され (存在する場合)、子サブコンポーネントで終了します。
  3. コンポーネントが DOM に表示されると、afterRender() がコールされ、これらの各コンポーネント定義について表示が完了したことが通知されます。これにより、フレームワークの表示サービスで DOM 要素が作成されたら、DOM ツリーを操作できます。
  4. クライアントがサーバ要求 XHR への応答の待機を終了したことを示すために、aura:doneWaiting イベントが起動されます。このイベントは、クライアント側コントローラアクションに結び付けられたハンドラを追加することで処理できます。

    aura:doneWaiting イベントは、最後の手段としてのみ使用することをお勧めします。aura:doneWaiting アプリケーションイベントは、サーバ応答 (アプリケーションの他のコンポーネントからの応答も含む) ごとに起動されます。コンポーネントがスタンドアロンアプリケーションで完全に独立した状態で実行されていて、Lightning Experience または Salesforce1 に含まれていない場合を除き、このアプリケーションイベントを処理することはおそらくないでしょう。コンテナアプリケーションは、サーバ側アクションを起動して、イベントハンドラを複数回トリガすることがあります。

    メモ

  5. フレームワークは、再表示が必要なコンポーネントがあるかどうか確認し、属性値の更新を反映する場合など、「汚れた」(更新が必要な) コンポーネントがあれば再表示します。この再表示確認は、汚れたコンポーネントや値が存在しない場合でも行われます。
  6. 最後に、aura:doneRendering イベントが表示ライフサイクルの終了時に起動されます。

    aura:doneRendering イベントは、最後の手段としてのみ使用することをお勧めします。コンポーネントがスタンドアロンアプリケーションで完全に独立した状態で実行されていて、Lightning Experience や Salesforce1 などの複雑なアプリケーションに含まれていない場合を除き、このアプリケーションイベントを処理することはおそらくないでしょう。コンテナアプリケーションは、イベントハンドラを複数回トリガすることがあります。

    メモ

ネストされたコンポーネントの表示

myApp.app というアプリケーションに myCmp.cmp コンポーネントが含まれ、そのコンポーネントに ui:button コンポーネントが含まれるとします。ネストされたコンポーネントは特定の順序で表示されます。

初期化中、init() イベントは、ui:buttonui:myCmpmyApp.app の順序で起動されます。