packages/fields/src/widgets/AddressField.tsx 与 GeolocationField.tsx 的子输入用的是硬编码字面量 id:
- AddressField:
id="street" / "city" / "state" / "zipCode" / "country"
- GeolocationField:
id="latitude" / "longitude"
后果:
- 一个表单(或一个页面)里出现两个 address / geolocation 字段时产生重复 DOM id,
Label htmlFor 的关联随之指向第一个匹配元素——第二个字段的每个子 label 点击/朗读都落在第一个字段的输入上。
- 这些 id 还会覆盖 form renderer 经
FormControl Slot 注入的 formItemId,行级 FormLabel 的 htmlFor 因此永远指不到任何控件。
修法参照同目录惯例:useId() 前缀 + 子字段名(RadioField / CheckboxesField 的 groupId 即此范式)。
发现于 #3318 的 aria-invalid 交付批次(该批次只处理 aria-invalid 送达,刻意未顺手改 id 结构)。
Generated by Claude Code
packages/fields/src/widgets/AddressField.tsx与GeolocationField.tsx的子输入用的是硬编码字面量 id:id="street"/"city"/"state"/"zipCode"/"country"id="latitude"/"longitude"后果:
Label htmlFor的关联随之指向第一个匹配元素——第二个字段的每个子 label 点击/朗读都落在第一个字段的输入上。FormControlSlot 注入的formItemId,行级FormLabel的htmlFor因此永远指不到任何控件。修法参照同目录惯例:
useId()前缀 + 子字段名(RadioField/CheckboxesField的groupId即此范式)。发现于 #3318 的 aria-invalid 交付批次(该批次只处理 aria-invalid 送达,刻意未顺手改 id 结构)。
Generated by Claude Code