You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

嵌套于Aura组件的LWC未正常工作,payload显示undefined问题排查

问题排查与解决方案

以下是几个可能导致你遇到问题的原因及对应解决方法:

1. Apex返回数据序列化不完整

Apex返回的对象如果属性未正确标记为可被LWC访问,会导致LWC接收后变成空对象。检查ActivityTimelineCC类的timelineData方法:

  • 若返回自定义类实例,需确保类和属性添加@AuraEnabled注解:
    public class TimelineResponse {
        @AuraEnabled
        public List<TimelineRow> rows;
    
        // 或通过public getter暴露属性
        @AuraEnabled
        public List<TimelineRow> getRows() {
            return rows;
        }
    }
    
  • 确保所有需要传递给LWC的属性都是public或通过@AuraEnabled的getter方法暴露。

2. 模板判断逻辑与数据结构不匹配

空对象在JavaScript中属于truthy值,你的模板if:true={payload}会在payload为空对象时仍进入循环,但此时payload.rows可能不存在:

  • 修改payload初始值为null,确保空状态判断准确:
    payload = null;
    
  • 调整模板判断条件,直接检查rows是否存在:
    <template if:true={payload?.rows} for:each={payload.rows} for:item="row">
        <p key={row.rowId}>a row</p>
    </template>
    
  • 在Wire方法中添加控制台日志,确认实际接收的数据结构:
    if(data){
        console.log('Received data structure:', data);
        this.payload = data;
    }
    

3. Apex返回类型与LWC预期不匹配

若Apex方法返回的是List<SObject>或直接返回列表而非包含rows属性的对象,LWC中payload将是数组而非带rows的对象,导致模板无法找到payload.rows:

  • 检查Apex方法的返回类型,确保返回结构包含rows属性;若直接返回列表,需修改模板循环payload而非payload.rows。

4. Wire参数动态绑定验证

虽然你确认recordId已传入,仍可在Wire方法中打印参数值,确保activityDate和recordId都正确传递到Apex:

console.log('Parameters sent to Apex:', { activityDate: this.activityDate, recordId: this.recordId });

内容的提问来源于stack exchange,提问作者user1517566

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 02:50:40