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

Signal Store实体功能添加新实体时报错,寻求技术支持

基于Entity的Signal Store添加实体报错排查与解决

我基于Entity实现了Signal Store功能,但添加新实体时出现错误,需要技术支持排查解决。

错误截图:
错误截图

功能代码

const recordConfig = entityConfig({
  collection: 'records',
  entity: type<Record>,
  selectId: (record) => record().pid,
});

export function withRecord() {
  return signalStoreFeature(
    withEntities(recordConfig),
    withMethods((store, campaignAPI = inject(CampaignAPI)) => ({
      appendRecord(
        campaignPID: number,
        ctpid: number,
        recordData: RecordGetResponseModel
      ): Record {
        const record: Record = {
          pid: ctpid,
          campaignPID: campaignPID,
          data: recordData,
        };

        patchState(store, addEntity(record, recordConfig));
        return record;
      },
    }))
  );
}

排查与修复方案

  • 核心错误修正:selectId配置中错误地将record当作函数调用。这里的record是普通实体对象,直接访问属性即可:

    selectId: (record) => record.pid,
    

    这是导致报错的直接原因——对普通对象执行record()会抛出not a function类型错误,与截图中的错误匹配。

  • 类型校验:确认Record类型的pid字段为number类型,和传入的ctpid类型一致,避免类型不匹配引发的隐性问题。

  • 调试验证:在调用patchState前添加日志,打印待添加的record对象,确认pid等关键字段存在且值符合预期:

    console.log('待添加实体:', record);
    patchState(store, addEntity(record, recordConfig));
    
  • 配置检查:核对recordConfig的collection名称、entity类型配置是否正确,无拼写或参数错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 01:42:07