ProComponents, templates & AI tooling
2.3k

Label 标签

用于标注表单字段等 UI 的文本组件,支持必填标记与校验状态。

导入

import { Label } from 'heroui-native';

结构

<Label>
  <Label.Text>...</Label.Text>
</Label>
  • Label:根容器,管理标签状态并为子组件提供上下文。传入字符串子节点时会自动渲染为 Label.Text。支持禁用、必填与非法状态。
  • Label.Text:标签文字;在必填时自动显示星号,非法或禁用时改变颜色。

用法

基础用法

展示标签文字。字符串子节点会自动渲染为 Label.Text

<Label>用户名</Label>

与表单字段配合

Label 与表单字段组合以提供无障碍标签。

<TextField>
  <Label>用户名</Label>
  <Input placeholder="请输入用户名" />
</TextField>

必填字段

使用 isRequired 显示必填星号。

<TextField>
  <Label isRequired>密码</Label>
  <Input placeholder="创建密码" secureTextEntry />
</TextField>

非法状态

在校验失败时使用非法样式突出标签。

import { FieldError, Label, TextField } from 'heroui-native';

<TextField isInvalid>
  <Label isInvalid>确认密码</Label>
  <Input
    placeholder="再次输入密码"
    secureTextEntry
    value="different"
    editable={false}
  />
  <FieldError>两次密码不一致</FieldError>
</TextField>

禁用状态

禁用标签以表示字段不可交互。

<TextField isDisabled>
  <Label>订阅方案</Label>
  <Input value="Premium" />
</TextField>

自定义布局

使用复合子组件自定义标签结构。

<Label>
  <Label.Text>自定义标签</Label.Text>
</Label>

自定义样式

通过 classNameclassNamesstyles 传入样式。

<Label className="mb-2">
  <Label.Text
    className="text-lg"
    classNames={{
      text: "font-bold",
      asterisk: "text-danger"
    }}
  >
    自定义样式标签
  </Label.Text>
</Label>

示例

import { FieldError, Label, TextField } from 'heroui-native';
import { View } from 'react-native';

export default function LabelExample() {
  return (
    <View className="flex-1 justify-center px-5 gap-8">
      <TextField>
        <Label>用户名</Label>
        <Input placeholder="请输入用户名" />
      </TextField>
      <TextField>
        <Label isRequired>密码</Label>
        <Input placeholder="创建密码" secureTextEntry />
      </TextField>
      <TextField isInvalid>
        <Label isInvalid>确认密码</Label>
        <Input
          placeholder="再次输入密码"
          secureTextEntry
          value="different"
          editable={false}
        />
        <FieldError>两次密码不一致</FieldError>
      </TextField>
      <TextField isDisabled>
        <Label>订阅方案</Label>
        <Input value="Premium" />
      </TextField>
    </View>
  );
}

更多示例见 GitHub 仓库

API 参考

Label

proptypedefaultdescription
childrenReact.ReactNode-标签内容。为字符串时自动渲染为 Label.Text;否则按原样渲染子节点
isRequiredbooleanfalse是否必填;为 true 时显示星号
isInvalidbooleanfalse是否非法;为 true 时文字使用危险色
isDisabledbooleanfalse是否禁用;应用禁用样式并阻止交互
classNamestring-额外的 class
animation"disable-all" | undefinedundefined动画配置;"disable-all" 可禁用自身及子级的全部动画
...PressablePropsPressableProps-支持 React Native Pressable 的全部属性

Label.Text

proptypedefaultdescription
childrenReact.ReactNode-标签文字内容
classNamestring-文本元素的额外 class
classNamesElementSlots<LabelSlots>-标签各部分的额外 class
stylesPartial<Record<LabelSlots, TextStyle>>-标签各部分的样式
nativeIDstring-无障碍用原生 ID,通过 aria-labelledby 关联表单控件
...TextPropsTextProps-支持 React Native Text 的全部属性

ElementSlots<LabelSlots>

proptypedescription
textstring标签文字的 class
asteriskstring星号的 class

styles

proptypedescription
textTextStyle标签文字样式
asteriskTextStyle星号样式

本页目录