Headless Quick Actions & Email Quick Actions

DEX475 - Open Modal Windows and Notifications

📄 第 373 页 🎬 视频课程

课程章节介绍

大家好,今天我们来聊聊Lightning Web Components里的一个特别实用的小技巧——无头快速操作。你可以把它想象成一个悄悄在后台帮你干活儿的助手,它不需要弹出任何界面,就能完成一系列任务。 首先,这个“无头”的意思就是模板为空,不会渲染出页面元素,所以用户根本看不到它。但别小看它,它必须有一个公共方法叫“invoke”,并且一定要加上@api装饰器来标记。因为Salesforce会在适当的时机自动调用这个invoke方法,就像给你发了一个无声的指令,请你立刻执行代码。 为了确保操作不乱套,我们通常会设置一个布尔类型的标志,比如叫isExecuting。为什么这么做呢?因为无头快速操作的返回类型是“空”,也就是它不返回Promise,所以系统不会理睬你有没有执行完,很可能在上一轮还没结束的时候就又触发下一次调用。用这个标志锁住,就能防止多次并行执行,保证逻辑是顺序、干净的。 那么无头操作能做什么呢?常见的模式有三种:第一种是用NavigationMixin导航到特定的页面或记录,比如操作完后自动跳转到某个对象的详情页;第二种是按顺序发送延迟的吐司通知,比如先弹出一个提示说“操作已提交”,过一会儿再弹一个“处理完成”;第三种就是执行后台操作,比如更新数据、调用Apex方法等等,完全在幕后工作。 现在我们来重点关注一下电子邮件快速操作。它也是一种特殊的无头操作,但是专门用来发送邮件的。在组件里,你需要引用一个标准__quickAction页面引用类型,它的API名称是“Global.SendMail”,注意大小写。这样平台就知道这是一个发邮件的行为。 那怎么预填充邮件的各项内容呢?你要用到一个叫“encodeDefaultFieldValues”的方法。你可以把收件人、抄送、邮件正文甚至HTML内容都提前塞进去,传给这个方法后,平台会自动生成预填好的邮件窗口,或者直接发送(取决于配置)。要注意一点:你在代码里想预设的这些字段,必须在电子邮件操作布局里不是只读的,否则填进去也没用。 我会给两个具体的例子帮助你理解。第一个例子:基于联系人的简单邮件。你使用getRecord拿到当前联系人记录的Id,把这个Id作为RelatedToId,邮件就会自动关联到这个联系人身上;第二个例子:基于客户的邮件。你可以使用lightning-record-picker组件让用户挑选一个客户下的联系人,过滤条件限定为只显示这个客户的相关联系人,选好后再把Id传进去。 总之,无头快速操作让你的组件更智能,用户体验也更流畅。记住这几个关键点:模板为空、必须实现@api invoke()、用isExecuting防重入,而电子邮件操作要使用Global.SendMail类型,并通过encodeDefaultFieldValues预设字段。灵活运用这些模式,你就可以创建出既安静又强大的功能。 今天的讲解就到这里,希望大家对无头快速操作有了清晰的认识,下次可以动手试试看哦。

关键词

LWC Lightning Web Components Salesforce