Field 表单字段

把标签、说明、必填与错误语义连接到表单控件。

Beta

示例

直接操作示例,查看组件在具体任务中的状态与反馈。

宿主即时校验本地工作区名称;Field 把标签、说明和错误关联到真实输入框。
受控名称校验
用于导航和成员邀请,最多 40 个字符。
名称可用:自动化运营工作区
错误信息
仅接受 HTTPS 地址。
必填标记、原生 required 与控件说明由同一字段容器连接。
成员邮箱
用于发送团队邀请。
中性消息在输入完成后提供结果,同时保持与控件的描述关系。
项目标识
保存后不可自动修改。
当前标识可用。
错误文本、aria-invalid 与输入控件使用同一个字段合同。
回调地址

使用建议

让标签指向真实控件

优先使用 render props 把 id、描述和错误关联属性传给输入控件,避免仅靠视觉邻近。

说明与错误各司其职

description 解释格式或约束,error 说明当前问题和修正方式;错误出现时不会重复普通消息。

统一表达必填和禁用

Field 的 required、disabled 应与内部原生控件保持一致,宿主仍需执行最终校验。

引入方式

从已验证的公开子路径导入组件;全局样式接入方式见安装指南。

import { BaseField } from '@inf-monkeys-tech/monkeys-design/components/base';

当前限制

  • Field 只为直接子控件提供关联属性;包含多个输入的复合字段仍需宿主设计分组、焦点与错误汇总。
  • Deterministic visual evidence is pending T17/T23.
export interface BaseFieldProps
  extends Omit<
    HTMLAttributes<HTMLDivElement>,
    'children' | 'className' | 'style' | 'title'
  > {
  label?: ReactNode;
  description?: ReactNode;
  message?: ReactNode;
  error?: ReactNode;
  required?: boolean;
  disabled?: boolean;
  htmlFor?: string;
  descriptionId?: string;
  messageId?: string;
  errorId?: string;
  children?: ReactNode | ((controlProps: BaseFieldControlProps) => ReactNode);
  appearance?: BaseAppearance;
  className?: string;
  classNames?: BaseFieldClassNames;
  style?: CSSProperties;
}
属性说明类型默认值
label字段控件上方显示并与控件关联的标签。ReactNode
description用于补充标题或标签含义的说明内容。ReactNode
message字段下方显示的帮助、成功或校验消息。ReactNode
error字段校验失败时显示的错误内容。ReactNode
required是否将该字段标记为必填。booleanfalse
disabled是否禁用该组件及其可交互行为。booleanfalse
htmlFor标签关联的表单控件 id。string
descriptionId说明文本元素的 id,用于建立 aria-describedby 关联。string
messageId消息元素的 id,用于建立可访问性关联。string
errorId错误文本元素的 id,用于建立可访问性关联。string
children在 BaseField 内渲染的子内容;支持渲染函数时以对应的 Props 类型为准。ReactNode | ((controlProps: BaseFieldControlProps) => ReactNode)
appearance覆盖组件使用的外观令牌或局部样式配置。BaseAppearance
className追加到组件根元素的 CSS 类名。string
classNames按组件公开的结构插槽分别追加 CSS 类名。BaseFieldClassNames
style追加到组件根元素的内联样式。CSSProperties