课程章节介绍
同学们,我们来看一下LWC里事件传播的配置。首先记住一个要点:千万不要把 bubbles 和 composed 同时设为 true,也就是不要用第四种组合。
那怎么选择呢?很简单,从默认值开始,默认两个都是 false。如果你的事件只是在组件内部,或者要发给直接插槽里的内容,只需要把 bubbles 设为 true。只有在绝对必要的时候,才把 composed 也设为 true,并且最好给事件名加上命名空间前缀,避免冲突。
不过,对于真正需要跨不同 DOM 树、甚至跨页面通信的场景,我们不靠这些配置硬撑,而是推荐用 Lightning Message Service,简称 LMS。
LMS 非常强大,能跨页面工作,支持 LWC、Aura、Visualforce,还能跨选项卡、弹出窗口,甚至跨命名空间。实现起来也不复杂,分三步走:第一,声明一个消息通道;第二,发布消息;第三,订阅和取消订阅。
最后提醒一下,旧版的 pubSub 模块虽然还在,但只适用于不支持 LMS 的容器,而且它只能在单个页面内通信,官方也不再维护了,所以新项目里尽量直接用 LMS,更可靠也更灵活。
这样解释,大家理解了吗?
关键词
LWC
Lightning Web Components
Salesforce