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

Aura.Action 属性型の使用

Aura.Action は、フレームワーク内のアクションへの参照です。子コンポーネントに Aura.Action 属性がある場合、親コンポーネントは、マークアップで子コンポーネントをインスタンス化するときに、ハンドラのアクションを渡すことができます。このパターンは、親コンポーネントから、その親に含まれる子コンポーネントへコントローラアクションを渡すショートカットであり、onclick などの on* ハンドラに使用されます。

Aura.Action で、子コンポーネントにアクションハンドラを渡すことができますが、代わりに子コンポーネントにイベントを登録し、子のコントローラ内でイベントを起動することをお勧めします。その後、親コンポーネントでイベントを処理します。このイベントを使用するアプローチは、イベントの作成または選択とその起動にいくつかの追加のステップを必要としますが、イベントはコンポーネント間の標準的な通信方法です。

Aura.Action は、これ以外のユースケースには使用しないでください。Aura.Action には、次のような既知の制限があります。

  • JavaScript コードで cmp.set() を使用して、すでに設定されている type="Aura.Action" の属性をリセットしないでください。これを行うと、エラーが発生します。
    1Unable to set value for key 'c.passedAction'. Value provider does not implement 'set(key, value)'. : false
  • 子コンポーネントで $A.enqueueAction() を使用して、Aura.Action 属性に渡されたアクションをキューに追加しないでください。

警告

この例は、親コンポーネントから子コンポーネントへアクションハンドラを渡す方法を示しています。

Aura.Action 属性を使用する子コンポーネントを次に示します。ボタンの onclick ハンドラは、onclick 属性の値を使用し、その型は Aura.Action です。

1<!-- child.cmp -->
2<aura:component>
3    <aura:attribute name="onclick" type="Aura.Action"/>
4
5    <p>Child component with Aura.Action attribute</p>
6    <lightning:button label="Execute the passed action" onclick="{!v.onclick}"/>
7</aura:component>

マークアップに子コンポーネントを含む親コンポーネントを次に示します。

1<!-- parent.cmp -->
2<aura:component>
3    <p>Parent component passes handler action to c:child</p>
4    <c:child onclick="{!c.parentAction}"/>
5</aura:component>

c:child のボタンをクリックすると、c:parent のコントローラの parentAction アクションが実行されます。

Aura.Action 属性の代わりに、<aura:registerEvent> を使用して子コンポーネントに onclick イベントを登録することもできます。その場合、イベントを定義し、イベントを起動するアクションを子のコントローラに作成する必要があります。このイベントベースのアプローチは、いくつか追加のステップを必要としますが、コンポーネント間の通信の標準的な手法に従うものです。