Add Event Listeners Dynamically — lwc:on

DEX475 - Composition

📄 第 83 页 🎬 视频课程

课程章节介绍

同学们,今天我们来看一下LWC里一个非常灵活的功能——使用 `lwc:on` 指令来动态地给子组件绑定事件监听器。 这个 `lwc:on` 一般会和 `lwc:spread` 配合使用。简单来说,`lwc:spread` 是用来动态传递属性的,而 `lwc:on` 就是专门用来动态传递事件处理函数的。你可以在父组件里准备好一个叫 `eventHandlers` 的对象,这个对象的键是事件类型的名称,值就是对应的处理函数。然后通过 `lwc:on` 把这个对象传给子组件。 举个实际场景:父组件想要监听子组件发出的一个叫 `customEvents` 的自定义事件。当子组件内部触发这个事件时,父组件里对应的处理函数就会被调用。处理函数会收到一个标准的事件对象,而子组件传过来的自定义数据,都放在 `event.detail` 里。比如,处理函数可以从 `event.detail` 里解构出消息文本、姓名和年龄,然后更新父组件自己的状态。 父组件状态一更新,就会触发重新渲染,页面上就能显示出子组件发来的消息。同时,父组件也可能把更新后的数据再以属性的形式传回给子组件。这样一来,父子之间就形成了清晰的通信闭环——子组件通过事件把数据抛上来,父组件通过属性把数据传下去。 这种模式虽然实现了双向通信,但依然保持着单向数据流的原则:数据总是从父流向子,而事件从子流向父。所以结构很清楚,调试起来也很方便。 好,关于 `lwc:on` 和 `lwc:spread` 的配合使用,我们就先聊到这里。大家可以在实际项目里试试,感受一下这种灵活的事件绑定方式。

关键词

LWC Lightning Web Components Salesforce