跳至正文

Field

标签、控件和错误信息的封装。

浏览器
Chrome 123+Firefox 121+Safari 17.5+
层级
0
压缩后大小
668 B
强制布局预算
0 ms
axe 预算
0
支持 SSR
是
公开契约
测试环境

交互示例

Field

默认

Your display name

Invalid

Password

Use at least eight characters.

Message

Up to 500 characters.

已禁用

Read only

API

Field.Root

属性类型默认值说明
id*string—每个组成部分均通过fieldId传回的稳定id,使标签、控件、描述和错误信息在服务端标记中相互连接。
invalidbooleanfalse将字段标为无效,并暴露data-invalid供样式使用。
requiredbooleanfalse将字段标为必填,并暴露data-required供样式使用。
disabledbooleanfalse将字段标为禁用,并暴露data-disabled供样式使用。
namestring—为API兼容而接受;name应设置在控件上,不会渲染到外层元素。
renderReactElement | ((props, state) => ReactElement)—替换渲染元素,同时保留行为和无障碍连接关系。

Field.Label

属性类型默认值说明
fieldId*string—与Field.Root相同的id,用于解析指向控件的htmlFor。
disabledbooleanfalse将标签标为禁用,并暴露data-disabled供样式使用。
requiredbooleanfalse将标签标为必填,并暴露data-required供样式使用。

Field.Control

属性类型默认值说明
asElementType"div"使用input、textarea、select或自定义控件。原生props、事件处理函数、style和ref均会转发。
type / name / autoComplete / minLength / maxLength / pattern / readOnlynative control props—输入框选项应设置在Field.Control上,包括type="password"。保留标准校验和FormData语义。
fieldId*string—与Field.Root相同的id,用于解析控件id及其aria-labelledby和aria-describedby关联。
disabledbooleanfalse将原生disabled转发给input、textarea和select,并暴露data-disabled。
invalidbooleanfalse设置aria-invalid,并将错误信息加入控件的aria-describedby。
requiredbooleanfalse将原生required转发给input、textarea和select,并设置aria-required。
renderReactElement | ((props, state) => ReactElement)—替换渲染元素,同时保留行为和无障碍连接关系。

Field.Description

属性类型默认值说明
fieldId*string—与Field.Root相同的id,用于解析控件所引用的描述id。
disabledbooleanfalse将描述标为禁用,并暴露data-disabled供样式使用。

Field.Error

属性类型默认值说明
fieldId*string—与Field.Root相同的id,用于解析控件无效时所引用的错误信息id。
invalidbooleanfalse是否渲染错误信息;为false时,该组成部分不渲染任何内容。

键盘

按键操作
Tab将焦点移入或移出控件
Enter / Space获得焦点时激活(按钮类控件)

无障碍

尽可能使用语义化HTML。可在交互示例中检查渲染的标记;仅在原生元素无法满足需求时添加ARIA。

样式钩子

data-disabled