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

LWC使用lightning-record-form更新Account后刷新lightning-datatable咨询

问题根因&解决方案

你的代码存在3处核心错误,对应修改如下:

1. 表单事件绑定错误

lightning-record-form的onsubmit是提交前触发的事件,此时数据还未写入Salesforce后端,此时调用refreshApex拉取的还是旧缓存数据。你需要绑定保存成功后触发的onsuccess事件。
修改HTML表单代码:

<lightning-record-form
        object-api-name="Account"
        record-id="0015e00000F2JoWAAV"
        fields={fields}
        onsuccess={handleSubmit}
>
</lightning-record-form>

2. 表格key-field配置错误

你的lightning-datatable指定了key-field="pk",但你处理后的账户数据里没有pk字段,只有Id字段,会导致数据更新后表格无法识别变化重渲染。
修改HTML表格代码:

<lightning-datatable 
        key-field="Id"
        data={cuentas}
        columns={columnas}
        onrowselection={action}
        hide-checkbox-column
        onrowaction={handleRow}
        default-sort-direction={defaultSortDirection}
        sorted-direction={sortDirection}
        sorted-by={sortedBy}
        onsort={onHandleSort}
>
</lightning-datatable>

3. 有线数据处理逻辑错误

你在wireCuentas回调中,每次拿到数据都是往已有cuentas数组追加内容,refreshApex触发后新数据会和旧数据叠加,无法正确更新。需要每次拿到新数据后重新生成数组,不要追加。
修改JS中的有线回调代码:

@wire(getCuentas)
wireCuentas(result) {
  this._wiredResult = result;
  if(result.data) {
    console.log('cuentas');
    console.log(result.data);
    // 先清空原有数据,再生成新数组
    this.cuentas = result.data.map((item, index) => {
      return {
        Id: item.Id,
        Name: item.Name,
        Phone: item.Phone,
        Boton: index + 1
      }
    });
    console.log('cuentas de nuevo');
    console.log(this.cuentas);
  } else if(result.error) {
    console.log('error cuentas');
    console.log(result.error);
  }
}

修改完成后,表单保存成功就会自动触发refreshApex拉取最新的账户列表,表格会同步渲染更新后的内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:09:03