菜单Chevron Down
TagsField 标签字段 - Docs - Artefact

TagsField 标签字段

Forms
智能自动检测

允许用户以列表形式输入多个标签的组件,与 Field 共用相同的标签、帮助文本、错误文本约定。

用法

React
Hono
按 Enter 添加标签
import { TagsField } from "../components/ui";

export default function MyPage() {
  return (
    <TagsField
      label="Skills"
      helperText="按 Enter 添加标签"
      defaultValue={["React", "Hono"]}
      onValueChange={(details) => console.log(details.value)}
    />
  );
}

行为

  • Enter 会将当前输入的文本提交为一个新标签(重复项会被忽略),并清空输入框。
  • 输入框为空时按 Backspace 会删除最后一个标签。
  • 点击某个标签的删除按钮(由 Items 渲染)会删除该标签。
  • 点击控件内非标签的区域会聚焦到输入框。

变体与尺寸

variant"outline" | "subtle" | "surface",默认 "outline")和 size"xs" | "sm" | "md" | "lg",默认 "md")控制外观,与 Field/Input 使用相同的约定。

<TagsField variant="subtle" size="lg" defaultValue={["React"]} />

组合使用

默认的 label/helperText/errorText 属性已覆盖大多数场景,但底层组成部分也可导出用于自定义布局:

import { TagsField } from "../components/ui";

<TagsField.Root defaultValue={["React", "Hono"]}>
  <TagsField.Label>Skills</TagsField.Label>
  <TagsField.Control>
    <TagsField.Items />
    <TagsField.Input placeholder="Add a skill…" />
  </TagsField.Control>
  <TagsField.ClearTrigger>Clear all</TagsField.ClearTrigger>
  <TagsField.HiddenInput name="skills" />
</TagsField.Root>;

CMS 页面构建器

该组件可作为 tagsField 区块在 页面构建器content/pages/*.json)中使用:

{
  "type": "tagsField",
  "label": "Amenities",
  "defaultValue": ["WiFi", "Fireplace", "Hot Tub"]
}

属性

属性类型默认说明
valuestring[]-受控标签(会强制启用交互模式)。
defaultValuestring[]-初始标签。
inputValuestring-受控的文本输入值(会强制启用交互模式)。
defaultInputValuestring-初始文本输入值。
labelChild-字段标签。
helperTextChild-标签下方显示的帮助文本。
errorTextChild-invalid 为真时显示的错误文本。
invalidboolean-强制无效状态,显示 errorText
disabledboolean-禁用输入框及删除/清除按钮。
readOnlyboolean-隐藏文本输入框,阻止添加新标签。
variant"outline" | "subtle" | "surface""outline"视觉样式。
size"xs" | "sm" | "md" | "lg""md"控件尺寸。
namestring-隐藏提交输入框的表单字段名(逗号连接的标签)。
dir"ltr" | "rtl"-文本方向。
onValueChange(details: { value: string[] }) => void-添加或删除标签时触发(会强制启用交互模式)。
onInputValueChange(details: { inputValue: string }) => void-文本输入变化时触发(会强制启用交互模式)。
interactiveboolean-强制启用或禁用水合。

CMS 配置

- label: Tags Field
  name: tagsField
  widget: object
  fields:
    - { label: Label, name: label, widget: string, required: false }
    - { label: Helper Text, name: helperText, widget: string, required: false }
    - { label: Error Text, name: errorText, widget: string, required: false }
    - { label: Default Tags, name: defaultValue, widget: list, required: false }

水合

第二级:当存在 valueinputValuedefaultValuedefaultInputValueonValueChangeonInputValueChange 时进行水合。