Skip to content
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
This repository was archived by the owner on Nov 4, 2026. It is now read-only.

级联清值 effect 用 RAW type 与裸名集合比对,对象表单的带前缀 id 整体落空 —— 选项收窄后旧值不清、可脏值提交 #4014

Closed

Description

@yinlianghui

发现于 #3986 的波及面测量(PR #4013),与该 PR 语义中性(修复前后这条路径同样落空),单独立单。

机制

packages/components/src/renderers/form/form.tsx:944 的级联清值 effect 取 resolvedType = f.widget || f.type(RAW,未过 normalizeFieldType)与 CASCADE_OPTION_FIELD_TYPES(裸名集合 {select, radio, multiselect, checkboxes})比对。对象表单生产者发出的是带前缀 id(field:select / field:multiselect 等),于是任何来自对象 schema 的选项字段都进不了这个 effect:级联父值变化、子字段选项集收窄后,旧值不会被清掉,可能以脏值提交。

同文件 :1514 的 isOptionField 已在 #3231 里用 normalizeFieldType 修过完全同族的问题 —— :944 是漏掉的第二处。

修法

:944 的比对同样过 normalizeFieldType(与 :1514 对齐)。修复会让对象表单路径首次获得级联清值行为 —— 这是行为变化不是等价重构,钉子按「收窄后旧值被清」的正向断言写,并保留裸名路径(手写 SDUI)的既有行为对照。

参考

Activity

  1. self-assigned this
    on Aug 16, 2026
  2. yinlianghui commented on Aug 16, 2026

    @yinlianghui
    ContributorAuthor

    Claim: 批次 9(座位 repo:objectui,session_01GTRjn8xBqp75dk7kFupVRt,batch:5)。查重:零评论、零关联 PR、六日无动;⚠️ 立卡后 form.tsx 已被多个 PR 改过(#4085/PR4760 等),行号必漂移,机制是否仍在以前提核验为准。
    Branch: claude/issue-4014-cascade-clear-normalize
    File surface: packages/components/src/renderers/form/form.tsx(:944 邻域级联清值 effect)+ 测试;⛔ 不动 :253 邻域的 CASCADE_OPTION_FIELD_TYPES 定义(#4770 收敛单另管)、不动 custom/filter-builder.tsx(#4768 在飞)。

    按正文修法:比对过 normalizeFieldType(与 :1514 先例对齐);行为变化钉正向断言(收窄后旧值被清)+ 裸名路径对照。


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions