Communication between Components: Parent to Child Calling Child’s Public Methods

DEX602 - Unit 2 Introducing Lightning Web Components

📄 第 187 页 🎬 视频课程

课程章节介绍

今天我们来聊聊在Salesforce Lightning Web Components (LWC) 中,父组件和子组件之间如何进行通信,特别是如何从父组件调用子组件的公共方法。 首先,想象一下,我们有一个父组件叫做`StudentBrowser`,它包含一个子组件`StudentTiles`。在`StudentTiles`组件中,我们有一个方法叫做`unselectStudent`,这个方法的作用是取消当前选中的学生磁贴。这个方法被标记为`@api`,这意味着它可以从外部组件(比如父组件)被调用。 现在,我们想要在`StudentBrowser`组件中添加一个按钮,当用户点击这个按钮时,它会调用`StudentTiles`组件中的`unselectStudent`方法,从而取消选中的学生磁贴。 ### 步骤1:在`StudentBrowser`中声明一个闪电按钮 首先,我们需要在`StudentBrowser`组件的HTML文件中添加一个按钮。这个按钮将用于触发取消选择的操作。 ```html ``` ### 步骤2:为按钮分配一个点击处理程序 接下来,我们需要在`StudentBrowser`组件的JavaScript文件中为这个按钮添加一个点击处理程序。这个处理程序将负责调用子组件的`unselectStudent`方法。 ```javascript import { LightningElement } from 'lwc'; export default class StudentBrowser extends LightningElement { handleUnselect() { // 这里我们将获取对子组件的引用 } } ``` ### 步骤3:使用`querySelector`获取子组件的引用 在`handleUnselect`方法中,我们需要使用`querySelector`函数来获取对`StudentTiles`子组件的引用。`querySelector`是一个标准的DOM API函数,它允许我们通过选择器来获取页面上的元素。 ```javascript handleUnselect() { const studentTiles = this.template.querySelector('c-student-tiles'); if (studentTiles) { studentTiles.unselectStudent(); } } ``` ### 步骤4:调用子组件的公共方法 一旦我们获取了对`StudentTiles`组件的引用,我们就可以直接调用它的`unselectStudent`方法了。这个方法会清除当前选中的学生磁贴的ID,从而实现取消选择的效果。 ### 总结 通过这种方式,父组件`StudentBrowser`可以轻松地与子组件`StudentTiles`进行通信,调用子组件的公共方法来实现特定的功能。这种方法非常灵活,可以用于各种场景,比如同步视图、更新数据等。 希望这个解释能帮助你理解如何在LWC中实现父组件和子组件之间的通信。如果你有任何问题,随时问我!