App Page - 185

DEX602 - Unit 2 Introducing Lightning Web Components

📄 第 185 页 🎬 视频课程

课程章节介绍

今天我们来聊聊在Salesforce的Lightning Web Components(LWC)中,如何实现父组件和子组件之间的通信。特别是,我们将通过一个具体的例子来理解这个过程。 假设我们有一个父组件叫做`c-student-browser`,它负责展示一个学生列表。在这个列表中,每个学生都是一个独立的子组件,我们称之为`c-student-tile`。当用户点击某个学生时,我们希望在另一个子组件`c-student-details`中显示这个学生的详细信息。 那么,父组件如何将选中的学生信息传递给`c-student-details`呢?这里我们有两种主要的方法: ,选项1:通过HTML属性分配子属性, 在父组件的HTML中,我们可以直接通过属性将数据传递给子组件。例如,如果我们有一个学生对象`selectedStudent`,我们可以在父组件的HTML中这样写: ```html ``` 这里,`student`是子组件`c-student-details`中的一个属性,我们用`@api`装饰器来标记它,使其成为公共的,这样父组件就可以通过HTML属性来设置它。 ,选项2:调用孩子的公共方法, 另一种方法是,父组件可以调用子组件的公共方法来传递数据。首先,在子组件中,我们定义一个公共方法,并用`@api`装饰器标记它: ```javascript @api updateStudentDetails(student) { // 更新学生详细信息的逻辑 } ``` 然后,在父组件中,我们可以通过JavaScript来调用这个方法: ```javascript this.template.querySelector('c-student-details').updateStudentDetails(this.selectedStudent); ``` 这里,`this.template.querySelector('c-student-details')`是用来获取子组件的引用,然后我们调用它的`updateStudentDetails`方法,并传递选中的学生对象。 这两种方法都可以有效地实现父组件和子组件之间的通信。选择哪一种,取决于你的具体需求和场景。希望这个解释能帮助你更好地理解LWC中的组件通信机制。如果有任何疑问,随时提问哦!