Import @salesforce/schema with Apex — getSObjectValue

DEX475 - Call Apex Methods

📄 第 313 页 🎬 视频课程

课程章节介绍

同学们,今天咱们来聊一个非常实用的小技巧,叫 getSObjectValue。 你有没有遇到过这种情况:在 Lightning Web 组件里,你调用了一个 Apex 方法,它返回了一堆 sObject 记录。看起来数据拿到了,但是有个小问题——你之前在 LDS 有线适配器里用的那个 @salesforce/schema 导入,能给你的字段引用做编译时检查、防删除、自动重命名级联,这些好处现在全没了。因为数据是直接从 Apex 返回的,不是通过 LDS 来的,编译时根本不知道你的 Apex 会返回哪些字段。 那怎么办呢?别担心,getSObjectValue 就是专为这个设计的。它让你能继续从 @salesforce/schema 导入那些字段引用,然后在跑 Apex 取回数据后,用这些引用去安全地提取值。也就是说,你写 getSObjectValue(sobject, fieldRef),它就会给你把值取出来。 这么做的好处跟原来一样:编译时就能验证字段名写没写错,万一管理员从对象上删除了这个字段,立马报错;重命名字段时,工具能自动帮你改;打包或变更集的时候也能正确包含这些字段。 而且它支持最多往下走三个层级的关系,比如 “联系人 -> 账户 -> 上级账户 -> 名称”,这样层级的关系字段也能用。 那在代码里怎么用呢?模式很简单:你把 Apex 的返回结果绑定到一个属性上,然后给每个你想要渲染的字段,写一个 getter,这个 getter 里面调用 getSObjectValue,传入数据记录和从 @salesforce/schema 导入的字段引用。最后你在模板里就像平时一样,直接绑定这些 getter 的名字就行了。 这样你就把 Apex 的灵活性和 schema 级别的严格验证结合起来啦,两全其美。你既享受了 Apex 自定义逻辑的自由,又不用牺牲编译时检查带来的安全感。 所以,记住这个小函数,等你用 Apex 返回 sObject 的时候,一定要用它来安全地访问字段值哦。

关键词

LWC Lightning Web Components Salesforce