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
相关产品推荐
相关产品推荐

