如何将非SObject/自定义对象的记录列表从LWC传递至Flow
解决LWC向Flow传递非SObject记录列表的方案
一、调整LWC的js-meta.xml配置
你当前的propertyType继承了SObject,但你的记录并非标准/自定义对象,这种配置不适用,需要修改为通用对象数组类型:
<property name="records2" type="Object[]" label="Records U" role="outputOnly" />
说明:
role="outputOnly"是必填项,标记该属性为LWC向Flow输出的参数,否则Flow无法接收数据。如果需要双向传递可改用readWrite,仅单向传递用outputOnly即可。
如果你的记录有固定结构,更推荐用Apex定义类实现强类型传递(更规范且易维护):
- 创建全局Apex类定义记录结构:
public class CustomRecord { @AuraEnabled public String field1; @AuraEnabled public Integer field2; // 按需添加其他字段 }
- 修改js-meta.xml引用该Apex类:
<property name="records2" type="CustomRecord[]" label="Records U" role="outputOnly" />
二、在LWC组件中传递数据
在LWC的JS文件中,将你的记录列表直接赋值给@api修饰的records2属性即可:
import { LightningElement, api } from 'lwc'; export default class YourLwcComponent extends LightningElement { @api records2; // 与meta中的属性名保持一致 // 示例:生成/获取非SObject记录列表并传递给Flow passRecordsToFlow() { const customRecords = [ { field1: '示例值1', field2: 100 }, { field1: '示例值2', field2: 200 } ]; this.records2 = customRecords; } }
注意:如果用Apex定义类,LWC中的对象结构必须和Apex类字段完全匹配,Flow才能正确解析。
三、Flow中配置资源并绑定
创建对应Flow资源:
- 若用
Object[]类型:创建集合变量,数据类型选「任意类型」,变量名设为records2(与LWC属性名一致)。 - 若用Apex定义的
CustomRecord[]类型:创建集合变量,数据类型选「Apex定义的类型」,然后选择你创建的CustomRecord类,变量名设为records2。
- 若用
绑定LWC与Flow变量:
- 在Flow中添加「屏幕」元素,将你的LWC组件拖到屏幕上。
- 点击LWC组件,在右侧设置面板的「输出」区域,找到
records2属性,绑定到你创建的Flow集合变量records2上。
验证传递结果:
可在Flow中添加「赋值」或「日志」元素,输出records2变量内容,确认数据是否成功传递。
常见问题排查
- 若Flow接收不到数据,检查LWC的
@api属性是否正确赋值,且js-meta.xml中是否设置了role="outputOnly"。 - 若用Apex定义类型,确保Apex类是全局的,且所有需要传递的字段都添加了
@AuraEnabled注解。 - 非SObject记录的字段名要和Flow资源(或Apex类)的字段名完全一致,大小写敏感。
内容的提问来源于stack exchange,提问作者satheesh
相关产品推荐
相关产品推荐

