Issue 编号:75
创建:2026-07-24T10:23:00Z
更新:2026-10-27T04:49:16Z
状态:open
标签:["blog:publish", "笔记", "前端", "bugfix", "chart", "public", "sort", "AI 写作为主"]
原始发布日期:2026-04-08T00:00:00.000Z
正文
问题现象
在图表配置详情页中,后端返回的配置值已经是“B”,但前端下拉框却显示成了“A”。
简化后的返回数据示例:
根因
问题出在同一业务对象在回填链路中使用了两种不同的标识格式。
- 一部分详情回填数据使用旧格式,例如
legacy-id
- 前端在重建对应对象时使用新格式,例如
normalized-id
由于这两种格式没有被当成同一个对象处理,前端在同步配置时无法复用原有项,只能按默认值新建一份配置。结果就是界面最终显示成了错误的文案。
修复
核心做法是增加一层 identity 归一化逻辑,把旧格式和新格式统一映射到同一个内部标识。
也就是
- 统一托管 key 的生成逻辑
- 在依赖对象匹配的读取逻辑中兼容两种格式
- 增加回归测试,确保旧格式和新格式都能命中同一个对象
修复后:
legacy-id和normalized-id会被视为同一个对象
- 详情回填时可以正确复用原有配置
- “B” 不会再被默认值覆盖成 “A”
总结
当系统经历过字段格式演进时或者说前端先行然后再对接后端的时候,详情回填、表单托管状态、二次计算逻辑之间必须共享同一套 identity 规则。否则即使返回值本身正确,也可能在重建过程中被默认值覆盖。
<!-- issues-blog:source=d1:a83cacf4-6df1-462e-afac-7ba8f2ee7367 -->
<!-- issues-blog:published-at=2026-04-08T00:00:00.000Z -->
