Email Content Builder — Configuration & Restrictions

DEX475 - Use Components in Salesforce Targets

📄 第 328 页 🎬 视频课程

课程章节介绍

同学们,今天我们来聊聊一个非常特别的Lightning Web组件——电子邮件内容生成器。它在Salesforce里可不是普通的组件,因为它的运行环境非常受限,就像被关在一个小房间里,很多东西都不让你用。 你想啊,通常我们做LWC,可以操作DOM,可以调用Apex,可以用fetch去拿数据,还能用各种现成的lightning-base组件。但在这个电子邮件内容生成器里,大部分都不支持。比如,你不能直接操作DOM API,不能用fetch去网络上抓数据,不能用脚本标签,甚至window对象也没有。就连我们常用的 @wire 来调用Apex,也基本不行,只有极少数的Apex类是开放的。还有渲染回调renderedCallback,其实也不让用——但有一个特例,就是设置innerHTML的时候,可以例外。 那这个组件里,我们能用什么呢?支持的属性类型很固定:字符串、布尔值,还有一些设计相关的像颜色、字形、水平线、垂直线这些。所以如果你想往邮件里放自定义的HTML内容,怎么办呢?你需要在一个特定的元素上,设置两个属性:isHtmlContainer='true' 和 lwc:dom='manual'。这样组件就知道,哦,这块内容要当作HTML来处理,而且你要手动控制DOM。 在代码设计上,常见的模式是这样:用一对getter和setter来管理HTML值。比如定义一个私有变量保存HTML字符串,然后通过getter暴露出去,setter在接收到新值时,去更新对应的DOM元素。那第一次加载的时候,因为renderedCallback是特例允许的,你可以在里面把初始的HTML设置到元素的innerHTML里。后续当数据变化时,setter就会负责更新innerHTML,保持内容同步。 最后部署的时候,我们也得用sf CLI命令,先把源代码转换成适合部署的格式,然后部署到测试组织里去测试。整个过程要特别小心,因为安全限制太多了,一不小心就会踩坑。 好,这就是电子邮件内容生成器的特殊之处。记住,它就像在一个高度安全、功能受限的小隔间工作,但只要我们掌握了规律,一样可以做出漂亮的邮件内容。

关键词

LWC Lightning Web Components Salesforce