レコード固有のアクションのコンポーネントの設定
force:hasRecordId はマーカーインターフェースです。マーカーインターフェースは、インターフェースの動作をコンポーネントに追加するよう伝える、コンポーネントのコンテナへの信号です。
recordId 属性は、明示的なレコードコンテキストでコンポーネントを配置または呼び出す場合にのみ設定されます。たとえば、レコードページレイアウトに直接コンポーネントを配置する場合、またはレコードページやオブジェクトホームからコンポーネントをオブジェクトに固有なアクションとして呼び出す場合などがこれに該当します。コンポーネントをグローバルアクションとして呼び出す、またはプログラムで別のコンポーネント内に作成するなど、その他すべての場合には recordId は設定されないため、コンポーネントでこれを使用しないでください。
レコード固有のアクションのコンポーネントの例
この拡張の例では、取引先レコードの詳細ページからカスタムオブジェクト固有のアクションとして呼び出されるように設計されたコンポーネントを示します。コンポーネントを作成したら、取引先オブジェクトのカスタムアクションを作成し、取引先ページレイアウトに追加する必要があります。アクションを使用したコンポーネントは、開かれた段階で、次のようなアクションパネルに表示されます。
コンポーネント定義は、まず force:lightningQuickActionWithoutHeader と force:hasRecordId の両方のインターフェースで実装されます。最初のインターフェースは、コンポーネントをアクションとして使用できるようにし、標準コントロールが表示されないようにします。2 番目のインターフェースは、レコードのコンテキストでコンポーネントが呼び出されたときにインターフェースのレコード ID 属性と値の自動割り当て動作を追加します。
- account — init ハンドラで読み込まれた完全な取引先レコードを保持
- newContact — フォーム項目の値を取得するために使用される空の取引先責任者
コンポーネントのコントローラには、3 つのアクションハンドラの目的のすべてのコードがあります。
最初のアクションハンドラ doInit は init ハンドラです。このハンドラのジョブは、force:hasRecordId インターフェースで提供されるレコード ID を使用して、完全な取引先レコードを読み込むことです。このコンポーネントが別のオブジェクト (リード、商談、またはカスタムオブジェクト) のアクションで使用されないようにする手段は講じられていません。この場合、doInit ではレコードの読み込みに失敗しますが、フォームは表示されます。
- 新しい取引先責任者を保存するサーバアクションを準備をする。
- サーバがアクションを完了したときのためにレスポンスハンドラと呼ばれるコールバック関数を定義する。レスポンスハンドラについては、後ほど説明します。
- サーバアクションをキューに追加する。
- force:closeQuickAction イベントを起動してアクションパネルを閉じる。
- force:showToast イベントを起動して、取引先責任者が作成されたことを示す「ト��スト」メッセージを表示する。
- レコードページに自身を更新するように通知する force:refreshView イベントを起動して、レコードページを更新する。
handleCancel アクションハンドラは、force:closeQuickAction イベントを起動してアクションパネルを閉じます。
ここに記載されているコンポーネントヘルパーは、その用途を十分に説明できるだけの最小限のヘルパーです。本番品質のフォーム検証コードでは、さらに多くの作業が必要になります。
最後に、このコンポーネントのサーバ側コントローラとして使用される Apex クラスは、わかりやすいように意図的に簡略化されています。