ã€ãã³ããšã®éä¿¡
åŠç¿ã®ç®ç
ãã®åå ãå®äºãããšã次ã®ããšãã§ããããã«ãªããŸãã
- 2 ã€ã®ããã°ã©ãã³ã°ã¢ãã«ã®ã€ãã³ãã®éãã説æããã
- Lightning Web ã³ã³ããŒãã³ããã Aura ã³ã³ããŒãã³ãã«ã€ãã³ããéä¿¡ããã
å£ã§å²ãŸããåäœã®ã³ã³ããŒãã³ãã¯äŸ¿å©ãããããŸããããã³ã³ããŒãã³ãéã§éä¿¡ãè¡ããããšãã«æ¬åœã®ã¢ããªã±ãŒã·ã§ã³ã®éæ³ãèµ·ãããŸããããã§éèŠãªã®ãã€ãã³ãã§ããã³ã³ããŒãã³ãéã®éä¿¡ã«ã€ãã³ãã䜿çšããã®ã¯ Web æšæºã§ãããAura ã³ã³ããŒãã³ããš Lightning Web ã³ã³ããŒãã³ãã®ã©ã¡ãã«ãããŠãã€ãã³ãã¯éä¿¡ã®äžæ žã§ãã
ã³ã³ããŒãã³ãã€ãã³ã㯠DOM ã€ãã³ãã«ãªã
Aura ã³ã³ããŒãã³ãã®ã³ã³ããŒãã³ãã€ãã³ãã Lightning Web ã³ã³ããŒãã³ãã® Web æšæº DOM ã€ãã³ãã«ç§»è¡ããŸããDOM ã€ãã³ãã«ã€ããŠçè§£ããŠããæ¹ã¯ãLightning Web ã³ã³ããŒãã³ãã§ã¯åãäŒéåäœãããããšããããã§ãããã
ã€ãã³ãã®äœæãšãã£ã¹ããã
Aura ã³ã³ããŒãã³ãå°æã® Event ãªããžã§ã¯ãã®ä»£ããã«ãEvent ãŸã㯠CustomEvent æšæº DOM ã€ã³ã¿ãŒãã§ãŒã¹ã䜿çšããŸããããäžè²«æ§ã®ãããšã¯ã¹ããªãšã³ã¹ãæäŸããããããCustomEvent ã€ã³ã¿ãŒãã§ãŒã¹ã䜿çšããããšã匷ããå§ãããŸãããã¬ãŒã ã¯ãŒã¯ã¯ããã©ãŠã¶ãŒéã®å®è£ ãæ£èŠåããããã«ãã€ãã³ãã®ããããã£ãšã¡ãœããã«ããããé©çšããªããã°ãªããªãå ŽåããããŸããCustomEvent ã䜿çšãããšã³ã³ããŒãã³ãã¯ç¢ºå®ã«ã«ããŒãããŸããInternet Explorer ã§ã¯ CustomEvent ã€ã³ã¿ãŒãã§ãŒã¹ã¯ãã€ãã£ãã§ãµããŒããããŸããããLightning Web ã³ã³ããŒãã³ãã¢ãã«ã«ãã£ãŠãã®ãµããŒãã远å ãããŸãã
Lightning Web ã³ã³ããŒãã³ãã«ã¯ãã³ã³ããŒãã³ããã€ãã³ããèµ·åã§ããããšãç»é²ãããAura ã³ã³ããŒãã³ãããŒã¯ã¢ããã® <aura:registerEvent> ã¿ã°ã«çžåœãããã®ããããŸãããæšæº DOM ã€ãã³ãã䜿çšãããããã§ããã®è¿œå ã®åŠçã¯å¿ èŠãããŸããã
Aura ã³ã³ããŒãã³ãã® event.fire() ã®ä»£ããã«ãLightning Web ã³ã³ããŒãã³ãã§ã¯ this.dispatchEvent(myEvent) æšæº DOM ã¡ãœããã䜿çšããŸãã
以äžã¯ãpropertyTile Lightning Web ã³ã³ããŒãã³ãã§ã€ãã³ããäœæããã³ãã£ã¹ããã (èµ·å) ããäŸã§ãã
export default class PropertyTile extends LightningElement {
@api property;
propertySelected() {
const selectedEvent = new CustomEvent('selected', {
detail: this.property.Id,
});
this.dispatchEvent(selectedEvent);
}
}CustomEvent() ã³ã³ã¹ãã©ã¯ã¿ãŒã®æåã®åŒæ°ã¯ãã€ãã³ãã®ååã selected ã«èšå®ããŸãã
2 çªç®ã®åŒæ°ã¯ãã€ãã³ãåäœãèšå®ãããªããžã§ã¯ãã§ãããã®ãªããžã§ã¯ãã§ã¯ãdetail ãèšå®ããŸããããã¯ã€ãã³ãã®ããŒã¿ãã€ããŒãã§ããåŠçã³ã³ããŒãã³ãã¯ããŒã¿ãèªã¿åãããšãã§ããŸãããã®å Žå㯠this.property.Id å€ãæž¡ããŸãã
ã€ãã³ãã®åŠç
Aura ã³ã³ããŒãã³ãã§ã¯ãããŒã¯ã¢ããã§ <aura:handler> ã¿ã°ã䜿çšããŠãã³ãã©ãŒãå®çŸ©ããŸãããããã¯ãã³ã³ããŒãã³ãã¯ããŒã¯ã¢ããã§å¥ã®ã³ã³ããŒãã³ããåç §ãããšãã«ãã³ãã©ãŒã¢ã¯ã·ã§ã³ã宣èšã§ããŸãã
ãã® Aura ã³ã³ããŒãã³ãã¯ãããŒã¯ã¢ããã§ c:child ã䜿çšããc:child ãèµ·åããéç¥ã€ãã³ãã® handleNotification ãã³ãã©ãŒã宣èšããŸãã
<c:child notification="{!c.handleNotification}"/>Lightning Web ã³ã³ããŒãã³ãã§ã¯ãé¡äŒŒã®å®£èšåãã³ãã©ãŒã䜿çšã§ããŸãã宣èšåãã³ãã©ãŒã®ã€ãã³ãåã«ã¯ãon ãšãããã¬ãã£ãã¯ã¹ãä»ããŸãã
<c-child onnotification={handleNotification}></c-child>handleNotification ã€ãã³ããã³ãã©ãŒé¢æ°ã¯ãã³ã³ããŒãã³ãã® JavaScript ãã¡ã€ã«ã§å®çŸ©ãããŸãã
Lightning Web ã³ã³ããŒãã³ãã®å Žåã¯ãã³ã³ããŒãã³ãã® JavaScript ãã¡ã€ã«ã§ addEventListener() æšæºã¡ãœããã䜿çšããŠããã°ã©ã ã§ãã³ãã©ãŒãèšå®ããããšãã§ããŸãã
DreamHouse ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãpropertyTile Lightning Web ã³ã³ããŒãã³ãã§äœæããã£ã¹ãããããã selected ã€ãã³ããã©ã®ããã«åŠçãããã®ãèŠãŠã¿ãŸããããpropertyTileList Lightning Web ã³ã³ããŒãã³ãã¯ãHTML ãã¡ã€ã«ã§ãã®ã€ãã³ããåŠçããŸãã
<template for:each={properties} for:item="property">
<c-property-tile property={property} key={property.Id} onselected={onPropertySelected}></c-property-tile>
</template>selected ã€ãã³ãåã«ã¯ãonselected={onPropertySelected} ã§èšå®ãã宣èšåãã³ãã©ãŒã§ on ãšãããã¬ãã£ãã¯ã¹ãä»ããŸãã
onPropertySelected ã€ãã³ããã³ãã©ãŒé¢æ°ã¯ propertyTileList.js ã§å®çŸ©ãããŸãã
onPropertySelected(event) {
pubsub.fire('propertySelected', event.detail);
}selected ã€ãã³ãã propertyTile ã§èµ·åãããšããæãåºããŠãã ãããCustomEvent() ã³ã³ã¹ãã©ã¯ã¿ãŒã§ detail ã this.property.Id ã«èšå®ãããŸããããã³ãã©ãŒã¯ãevent.detail ã«ã¢ã¯ã»ã¹ããŠã€ãã³ãããŒã¿ãã¢ã³ããã¯ããŸãããã®äŸã§ã¯ãevent.detail ã®ãããã㣠ID ãååŸããŸãã
次ã¯ãã¢ããªã±ãŒã·ã§ã³ã€ãã³ããèŠãŠãpubsub.fire() ã§äœãèµ·ãã£ãŠããã®ã説æããŸãã
ã¢ããªã±ãŒã·ã§ã³ã€ãã³ã㯠Publish-Subscribe ãã¿ãŒã³ã«ãªã
Aura ã³ã³ããŒãã³ãã®ã¢ããªã±ãŒã·ã§ã³ã€ãã³ãã Lightning Web ã³ã³ããŒãã³ãã® pub-sub (publish-subscribe) ãã¿ãŒã³ã«ç§»è¡ããŸããpub-sub ãã¿ãŒã³ã§ã¯ãããã³ã³ããŒãã³ããã€ãã³ããå ¬éããä»ã®ã³ã³ããŒãã³ãã¯ç»é²ããŠãã®ã€ãã³ããåä¿¡ããåŠçããŸããã€ãã³ãã«ç»é²ããŠãããã¹ãŠã®ã³ã³ããŒãã³ããã€ãã³ããåä¿¡ããŸãã
æšæº DOM ã€ãã³ãã¯ã³ã³ãã€ã³ã¡ã³ãéå±€ã®äžäœã«ã®ã¿äŒæããŠããã®ã§ãæšæº DOM ã€ãã³ããåžžã«ç¬¬ 1 ã«éžæããŸãããããããšåäœãäºæž¬ãããããªããŸããã©ã®ã³ã³ããŒãã³ããã€ãã³ããåŠçã§ããã®ã§ãè€éãªã¢ããªã±ãŒã·ã§ã³ã§ã¯ã¢ããªã±ãŒã·ã§ã³ã€ãã³ããåé¡ã«ãªãããšããããŸãããã®ãã¿ãŒã³ã¯ãã³ã³ããŒãã³ãã®äºæããªãçµåã«ãããã³ãŒããã¡ã³ããã³ã¹ãã«ãããã®ã«ãªãå¯èœæ§ããããŸãããã ããéä¿¡ããããã«ã³ã³ãã€ã³ã¡ã³ãéå±€å ã®å åŒã³ã³ããŒãã³ããå¿ èŠã«ãªãå ŽåããããŸããLightning ããŒãžã Lightning ã¢ããªã±ãŒã·ã§ã³ãã«ããŒã§äœ¿çšãããé¢é£ããªãã³ã³ããŒãã³ãã¯ãéä¿¡ããå¿ èŠãããå åŒã³ã³ããŒãã³ãã®äžäŸã§ãããã®ãããªã·ããªãªã§ã¯ãpub-sub ãã¿ãŒã³ãé©ããŠããŸãã
DreamHouse ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãpubsub.js ã¢ãžã¥ãŒã«ã䜿çšãããŸããpubsub ã¢ãžã¥ãŒã«ãèªç±ã«ã³ããŒããŠãã³ãŒãã§äœ¿çšããŠãã ããã
pubsub ã¢ãžã¥ãŒã«ã¯ 3 ã€ã®ã¡ãœããããšã¯ã¹ããŒãããŸãã
register: ã€ãã³ãã®ã³ãŒã«ããã¯ãç»é²ããŸããunregister: ã€ãã³ãã®ã³ãŒã«ããã¯ãç»é²è§£é€ããŸããfire: ã€ãã³ãããªã¹ããŒã«å¯ŸããŠèµ·åããŸãã
å²ãã§ãã Aura ã³ã³ããŒãã³ããžã®ã€ãã³ãã®éä¿¡
Lightning Web ã³ã³ããŒãã³ã㯠DOM ã€ãã³ãããã£ã¹ãããããŸããå²ãã§ãã Lightning Web ã³ã³ããŒãã³ããšåæ§ã«ãå²ãã§ãã Aura ã³ã³ããŒãã³ãã¯ãããã®ã€ãã³ãããªã¹ã³ã§ããŸããå²ãã§ãã Aura ã³ã³ããŒãã³ãã¯ãã€ãã³ãããã£ããã£ããŠåŠçã§ããŸããå¿ èŠã«å¿ããŠãAura ã³ã³ããŒãã³ã㯠Aura ã€ãã³ããèµ·åããä»ã® Aura ã³ã³ããŒãã³ããã¢ããªã±ãŒã·ã§ã³ã³ã³ãããšéä¿¡ã§ããŸãã
ãã®ææ³ã¯ãAura ã³ã³ããŒãã³ãã§ãµããŒããããŠããããã©ããLightning Web ã³ã³ããŒãã³ãã§ã¯çŸåšãµããŒããããŠããªãã€ãã³ããŸãã¯ã€ã³ã¿ãŒãã§ãŒã¹ããµããŒãããå Žåã«åœ¹ç«ã¡ãŸãã
次ã®äŸã¯ããã®ææ³ã瀺ããŠããŸãããã® Lightning Web ã³ã³ããŒãã³ã㯠JavaScript ãã¡ã€ã«ã§ã«ã¹ã¿ã notification ã«ã¹ã¿ã ã€ãã³ããèµ·åããŸãã
// catchAndRelease.js
import { LightningElement } from 'lwc';
export default class CatchAndRelease extends LightningElement {
/**
* Handler for 'Fire My Toast' button.
* @param {Event} evt click event.
*/
handleFireMyToast(evt) {
const eventName = 'notification';
const event = new CustomEvent(eventName, {
detail: { message: 'See you on the other side.' }
});
this.dispatchEvent(event);
}
}å²ãã§ãã Aura ã³ã³ããŒãã³ãã®ã©ãããŒã¯ã«ã¹ã¿ã ã€ãã³ãã«ãã³ãã©ãŒã远å ããŸããonnotification ã€ãã³ããã³ãã©ãŒã¯ on ã®ãã¬ãã£ãã¯ã¹ãä»ããã€ãã³ãåãšäžèŽããŸããã€ãŸããonnotification ã䜿çšããŠãnotification ãšããååã®ã€ãã³ããåŠçããŸãã
<!-- catchAndReleaseWrapper.cmp -->
<aura:component implements="force:appHostable">
<c:catchAndRelease onnotification="{!c.handleCustomEvent}"/>
</aura:component>catchAndReleaseWrapper Aura ã³ã³ããŒãã³ãã®ã³ã³ãããŒã©ãŒã® handleCustomEvent 颿°ãã€ãã³ããåŠçããŸãã
// catchAndReleaseWrapperController.js
({
handleCustomEvent: function(cmp, evt) {
// Get details from the DOM event fired by the Lightning web component
var msg = evt.getParam('message') || '';
}
})Lightning Web ã³ã³ããŒãã³ãã«ãã£ãŠãã£ã¹ããããããéç¥ã€ãã³ããã€ãã³ãã®è©³çްãèšå®ããŸãã
detail: { message: 'See you on the other side.' }ã€ãã³ããåŠçãã Aura ã³ã³ããŒãã³ãã evt.getParam('message') ã䜿çšããŠã€ãã³ãããŒã¿ã«ã¢ã¯ã»ã¹ããŸãã
ã€ãã³ãã¯å¥œããªããã«åŠçã§ããŸããå¿ èŠã«å¿ããŠãæ°ãã Aura ã€ãã³ããèµ·åããŠä»ã® Aura ã³ã³ããŒãã³ããšéä¿¡ããããšãã§ããŸãã
ãªãœãŒã¹
- Lightning Aura ã³ã³ããŒãã³ãéçºè ã¬ã€ã: ã€ãã³ããšã®éä¿¡
- Lightning Web Components Developer Guide (Lightning Web ã³ã³ããŒãã³ãéçºè ã¬ã€ã): ã€ãã³ãã®ç§»è¡
ãŸãšã
倿°ã®æŠå¿µã説æããŸããããAura ã³ã³ããŒãã³ãã Lightning Web ã³ã³ããŒãã³ãã«ã©ã®ããã«ãããã³ã°ãããã®ãã«ã€ããŠçè§£ãæ·±ãŸã£ãããšã§ããããããã«è©³ããåŠã¶äžçªã®æ¹æ³ã¯ãã³ãŒãã§ãããããšè©ŠããŠã¿ãããšã§ããæ¬¡ã®ã¹ãããã®ã¢ã€ãã¢ãããã€ã玹ä»ããŸãã
- DreamHouse ã¢ããªã±ãŒã·ã§ã³ã³ãŒãã調ã¹ããã¹ãŠã®ã³ã³ããŒãã³ããã©ã®ããã«é£æºããŠããã®ãã確èªããã
- GitHub ã® lwc-recipes ãªããžããªã§ãäžè¬çãªãŠãŒã¹ã±ãŒã¹åãã®å€æ°ã®ã³ãŒããµã³ãã«ãåç
§ããã
- Sample Gallery (ãµã³ãã«ã®ã£ã©ãªãŒ) ã®ãµã³ãã«ã¢ããªã±ãŒã·ã§ã³ãåç
§ããã
éäžã§äœåºŠãã€ãŸãããããäºæ³å€ã®è±ç·ããã£ãããããšããŠãããžã£ãŒããŒããã²æ¥œããã§ãã ããã
ã§ãããããå Žåã¯?
æ®å¿µãªããã1 ã€ã® Trailhead ã¢ãžã¥ãŒã«ã§èª¬æã§ããå 容éã«ã¯éãããããŸããã¢ãžã¥ãŒã«ã¯ãæ°Žãå ¥ã£ããã±ãã®ãããªãã®ã§ããå ¥ããããæ°Žã®éã¯éãããŠããããããè¶ ãããšæº¢ãåºããŸãããã倧ããªãã±ããéžã¶ãšãééããŠæã¡éã¹ãªããªããŸãã
ç¥ãããæ©èœã®èª¬æããªãã£ãå Žåãããã¯èª¬æããããªãã£ããšããããšã§ã¯ãããŸããããã±ãããã£ã±ããªã ãã§ãã
ã³ã³ããŒãã³ãã®ãã¹ã
ç¹ã«ãã³ã³ããŒãã³ãã®ãã¹ããšããéèŠãªéšåã«ã€ããŠã¯èª¬æããŸããã§ãããéçºè ã¬ã€ãã§è©³çްãåç §ããããã®ã¢ããã€ã¹ã¯æ¬¡ã®ãšããã§ãã
Aura ã³ã³ããŒãã³ãã§ã¯ãLightning Testing Service ã䜿çšããŠã³ã³ããŒãã³ãããã¹ãããŸãã
Lightning Web ã³ã³ããŒãã³ãã§ã¯ãåäœãã¹ãçšã® Jest ã䜿çšããŸããJest ã§ãã¹ãŠã®ãã¹ãã±ãŒã¹ããã¹ãã§ããªããã°ãLightning Testing Service ã䜿çšããŠæ®ãã®ãã¹ãã±ãŒã¹ããã¹ãããŠãã ããããTest Lightning Web Components (Lightning Web ã³ã³ããŒãã³ãã®ãã¹ã)ããåç §ããŠãã ããã
Aura ã¡ãœãã㯠JavaScript ã¡ãœããã«ãªã
Aura ã³ã³ããŒãã³ãã® <aura:method> ã¿ã°ã®ã¡ãœããããLightning Web ã³ã³ããŒãã³ãã® @api ãã³ã¬ãŒã¿ãŒã䜿çšãã JavaScript ã¡ãœããã«ç§»è¡ããŸãã
JavaScript ã¡ãœããã¯ãã³ã³ãã€ã³ã¡ã³ãéå±€ã§äžäœãšéä¿¡ããããã«äœ¿çšããŸããããšãã°ã芪ã³ã³ããŒãã³ãã¯ãå«ãŸããŠããåã³ã³ããŒãã³ãã®ã¡ãœãããã³ãŒã«ããŸããã¡ãœããã¯ã³ã³ããŒãã³ãã® API ã®äžéšã§ãã
詳现ã¯ããLightning Web Components Developer Guide (Lightning Web ã³ã³ããŒãã³ãéçºè ã¬ã€ã)ãã®ãCall Methods on Child Components (åã³ã³ããŒãã³ãã®ã¡ãœããã®ã³ãŒã«)ããåç §ããŠãã ããã
ã€ã³ã¿ãŒãã§ãŒã¹ã®ç§»è¡
Aura ã³ã³ããŒãã³ãã®ã€ã³ã¿ãŒãã§ãŒã¹ã¯ãäž»ã«ããŒã«ãŒã€ã³ã¿ãŒãã§ãŒã¹ãšããŠäœ¿çšãããã¢ããªã±ãŒã·ã§ã³ã®ã³ã³ããŒãã³ãã®ç¹å®ã®äœ¿ç𿹿³ãæå¹ã«ããŸããããŒã«ãŒã€ã³ã¿ãŒãã§ãŒã¹ã¯ã屿§ãã€ãã³ããã¡ãœãããå«ãŸãªã空ã®ã€ã³ã¿ãŒãã§ãŒã¹ã§ãã
Lightning Web ã³ã³ããŒãã³ãã§ã¯ãäœ¿çšæ¹æ³ã¯ã³ã³ããŒãã³ãã®èšå®ãã¡ã€ã«ããç°¡å㪠@api ãã³ã¬ãŒã¿ãŒã䜿çšããŠå®çŸ©ãããŸãã
詳现ã¯ããLightning Web Components Developer Guide (Lightning Web ã³ã³ããŒãã³ãéçºè ã¬ã€ã)ãã®ãMigrate Interfaces (ã€ã³ã¿ãŒãã§ãŒã¹ã®ç§»è¡)ããåç §ããŠãã ããã
ã¢ã¯ã»ã¹å¶åŸ¡ã®ç§»è¡
Aura ãã³ãã«ã®ãªãœãŒã¹ (ã³ã³ããŒãã³ãã屿§ãªã©) ãžã®ã¢ã¯ã»ã¹ã管çããã«ã¯ãaccess ã·ã¹ãã 屿§ã䜿çšããŸãã
Lightning Web ã³ã³ããŒãã³ãã§ã¯ã¢ã¯ã»ã¹å¶åŸ¡ã®ã¡ã«ããºã ãç°ãªããŸããã¢ã¯ã»ã¹ã¯ãJavaScript ããããã£ãã³ã¬ãŒã¿ãŒãšã³ã³ããŒãã³ãã®èšå®ãã¡ã€ã«ã§å®çŸ©ãããŸãã
詳现ã¯ããLightning Web Components Developer Guide (Lightning Web ã³ã³ããŒãã³ãéçºè ã¬ã€ã)ãã®ãMigrate Access Controls (ã¢ã¯ã»ã¹å¶åŸ¡ã®ç§»è¡)ããåç §ããŠãã ããã
