この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
子から親への通信を行うには、イベントをディスパッチします。Lightning Web コンポーネントは、DOM イベントを起動します。囲んでいる Lightning Web コンポーネントと同様に、囲んでいる Aura コンポーネントはこれらのイベントをリスンできます。囲んでいる Aura コンポーネントは、イベントを捕捉して処理できます。必要に応じて、Aura コンポーネントは Aura イベントを起動し、他の Aura コンポーネントやアプリケーションコンテナと通信できます。
このコードは、lwc-recipes リポジトリの categoryFilter コンポーネントと auraDomEventListener コンポーネントから引用されています。
次の例は、この手法を示しています。この Lightning Web コンポーネントは JavaScript ファイルでカスタム filterchange イベントを起動します。
1// categoryFilter.js
2import { LightningElement } from "lwc";
3
4export default class CategoryFilter extends LightningElement {
5 handleCheckboxChange() {
6 // Get the labels of selected checkboxes
7 const filters = Array.from(
8 this.template.querySelectorAll("lightning-input")
9 )
10 .filter((element) => element.checked)
11 .map((element) => element.label);
12 const filterChangeEvent = new CustomEvent("filterchange", {
13 detail: { filters },
14 });
15 // Fire the custom event
16 this.dispatchEvent(filterChangeEvent);
17 }
18}1<!-- categoryFilter.html -->
2<template>
3 <lightning-input
4 label="Category 1"
5 type="checkbox"
6 onchange={handleCheckboxChange}
7 ></lightning-input>
8 <lightning-input
9 label="Category 2"
10 type="checkbox"
11 onchange={handleCheckboxChange}
12 ></lightning-input>
13</template>囲んでいる Aura コンポーネントのラッパーはカスタムイベントにハンドラを追加します。イベントハンドラ onfilterchange は「on」のプレフィックスが付いたイベント名と一致します。つまり、onfilterchange を使用して、filterchange という名前のイベントを処理します。
1<!-- auraDomEventListener.cmp -->
2<aura:component implements="flexipage:availableForAllPageTypes">
3 <aura:attribute name="message" type="String" default="No selection"/>
4
5 <lightning:card title="AuraDomEventListener" iconName="custom:custom30">
6 <aura:set attribute="actions">
7 <span class="aura">Aura Component</span>
8 </aura:set>
9 <div class="slds-m-around_medium">
10 <lightning:layout>
11 <lightning:layoutItem size="4">
12 <!-- This is an LWC component -->
13 <c:categoryFilter onfilterchange="{!c.handleFilterChange}"/>
14 </lightning:layoutItem>
15 <lightning:layoutItem size="8" class="slds-p-left_medium">
16 {!v.message}
17 </lightning:layoutItem>
18 </lightning:layout>
19 </div>
20 </lightning:card>
21</aura:component>onfilterchange ハンドラは、DOM イベントが伝達する最初の Aura コンポーネントでのみ指定できます。
Note
Aura コンポーネントのコントローラは、イベントを受信します。イベントは好きなように処理できます。このコンポーネントは、Lightning Web コンポーネントイベントの details プロパティで渡される filters 配列を操作します。必要に応じて、新しい Aura イベントを起動して他の Aura コンポーネントと通信することもできます。
1// auraDomEventListenerController.js
2({
3 handleFilterChange: function (component, event) {
4 var filters = event.getParam("filters");
5 component.set(
6 "v.message",
7 filters.length > 0 ? "Your selection: " + filters.join() : "No selection"
8 );
9 },
10});関連トピック
The Japanese Summer '24 guide is now live