Lightning Web Component: Event (Parent to Chlid / Child to Partner)

Events- Parent To Child Navigation

Sometimes it is needed to merge the two or more components and after merging we also need a data flow between the components.

To pass data from top-bottom (Parent to child) in the component list, the child or lower component must declare a public API, with this public API parent can pass the data to child

Public properties

Public properties are properties denoted by the @api decorator. It is also known as Public reactive property.

Note: It is crucial that You can assign a default value to public property, but you should never change the value of public property in the component.

Events- Child To Parent Navigation

Data must be passed up using Events. Events are the activity or the action that fires from the child component and listens to the parent.

LWC creates the Events using the Event or CustomEvent standard JavaScript classes. The CustomEvent class will allow you to store information in its detail property and then transmit those details(information) to the listeners of the event. Then, you can make an event target dispatch to invoking the dispatchEvent standard method.

Event propagation

Event propagation means launching a series of events in the web browser. This can be the top to bottom and bottom to top. Event propagation defines how to travel in the DOM tree.

There are two types of propagation that manage the Lightning component event handling.

  • Bubble: Bubble event allow the event to fire upward direction
  • Composed: composed determines whether the event should ignore the shadow DOM or not.
  • Syntax:
    this.dispatchEvent(new CustomEvent('clickevevent', { bubbles: false , composed : false }));

Practical operation

LWC: Parent Component

HTML

html 复制代码
<template>


    <div if:true={isMainPage}>
        <p>This is parent page.</p>
        <button class="slds-button slds-button_outline-brand" onclick={handleClick}>Go to Child Page</button>
    </div>
    <div if:true={isChildPage}>
        <c-child-Component onchildclick={handleChildEvent} message={message} ></c-child-Component>
    </div>


 </template>

JS

js 复制代码
import { LightningElement,api,track } from 'lwc';

export default class ParentComponent extends LightningElement {
    @track isMainPage = true;
    @track isChildPage = false;
    @api message;
    constructor(){
        super();
        this.template.addEventListener('childclick', this.handleClick.bind(this));
    }

    handleClick(event){
        this.message = 'Parent send data to child.';
        this.isMainPage = false;
        this.isChildPage = true;
    }

    handleChildEvent(event){
        this.isMainPage = event.detail.isMainPage;
        this.isChildPage = event.detail.isChildPage;
    }

}

LWC: Child Component

HTML

html 复制代码
<template>
    <div>
        <p>This is child page.</p>
        Message: {message}
        <button class="slds-button slds-button_outline-brand" onclick={clickbutton}>Go to Parent Page</button>
    </div>
 </template>

JS

js 复制代码
import { LightningElement, api } from 'lwc';

export default class ChildComponent extends LightningElement {

    @api message;

    clickbutton(){
        const event = new CustomEvent('childclick', {
            detail: {isMainPage:true,isChildPage:false}
            });
        this.dispatchEvent(event);
    }
}

Picture

相关推荐
why技术1 小时前
eli5,我觉得这个全网在吹的技能,使用体验真的很一般啊。
前端·人工智能·后端
excel1 小时前
记录升级 nuxt3 到 nuxt4 记录
前端
剑胆琴心静水深流2 小时前
全栈之路6---web集成与呈现
前端·vue.js·spring boot·分布式·spring·前端框架·npm
前端snow2 小时前
ai agent -- Memory汇总
前端
ITresearchGuest2 小时前
AI 焦虑下,前端该何去何从
前端·人工智能
Codiggerworld3 小时前
Chrome DevTools 隐藏神技:这 5 个调试技巧你可能从来没用过
前端·chrome·chrome devtools
旋生万物3 小时前
【终极实战】用Python从零“生成“一个宇宙:螺旋干涉模型的代码实现
开发语言·前端·人工智能·react.js·php·wpf
IT_陈寒3 小时前
被Java的final坑惨了,这些细节你可能也忽略了
前端·人工智能·后端
kyriewen3 小时前
我带着DeepSeek Harness跑了一周真实需求——这份避坑速查表请收好
前端·ai编程·deepseek
计算机魔术师4 小时前
OpenAI不单独发o3了,Altman说GPT-5才是终局
前端