Tag 标签组件 #

基本用法 #

jsx
import { Tag, TagLabel, TagLeftIcon, TagRightIcon, TagCloseButton } from '@chakra-ui/react'

function Example() {
  return (
    <Tag>
      <TagLabel>默认标签</TagLabel>
    </Tag>
  )
}

标签尺寸 #

jsx
<Tag size="sm"><TagLabel>小标签</TagLabel></Tag>
<Tag size="md"><TagLabel>中等标签</TagLabel></Tag>
<Tag size="lg"><TagLabel>大标签</TagLabel></Tag>

标签变体 #

jsx
<Tag variant="subtle"><TagLabel>柔和</TagLabel></Tag>
<Tag variant="solid"><TagLabel>实心</TagLabel></Tag>
<Tag variant="outline"><TagLabel>轮廓</TagLabel></Tag>

标签颜色 #

jsx
<Tag colorScheme="green"><TagLabel>成功</TagLabel></Tag>
<Tag colorScheme="red"><TagLabel>错误</TagLabel></Tag>
<Tag colorScheme="blue"><TagLabel>信息</TagLabel></Tag>
<Tag colorScheme="orange"><TagLabel>警告</TagLabel></Tag>

带图标标签 #

jsx
import { AddIcon, CheckIcon } from '@chakra-ui/icons'

<Tag>
  <TagLeftIcon as={AddIcon} />
  <TagLabel>添加</TagLabel>
</Tag>

<Tag>
  <TagLabel>完成</TagLabel>
  <TagRightIcon as={CheckIcon} />
</Tag>

可关闭标签 #

jsx
<Tag>
  <TagLabel>可关闭</TagLabel>
  <TagCloseButton />
</Tag>

标签组 #

jsx
import { HStack } from '@chakra-ui/react'

<HStack spacing={4}>
  <Tag size="lg" colorScheme="red" borderRadius="full">
    <TagLabel>红色</TagLabel>
  </Tag>
  <Tag size="lg" colorScheme="green" borderRadius="full">
    <TagLabel>绿色</TagLabel>
  </Tag>
  <Tag size="lg" colorScheme="blue" borderRadius="full">
    <TagLabel>蓝色</TagLabel>
  </Tag>
</HStack>

实用示例 #

技能标签 #

jsx
function SkillTags({ skills }) {
  const [selected, setSelected] = useState([])

  const toggleSkill = (skill) => {
    if (selected.includes(skill)) {
      setSelected(selected.filter((s) => s !== skill))
    } else {
      setSelected([...selected, skill])
    }
  }

  return (
    <HStack spacing={2} wrap="wrap">
      {skills.map((skill) => (
        <Tag
          key={skill}
          size="lg"
          variant={selected.includes(skill) ? 'solid' : 'outline'}
          colorScheme="blue"
          cursor="pointer"
          onClick={() => toggleSkill(skill)}
        >
          <TagLabel>{skill}</TagLabel>
        </Tag>
      ))}
    </HStack>
  )
}

输入标签 #

jsx
function InputTags() {
  const [tags, setTags] = useState(['React', 'Chakra UI'])
  const [input, setInput] = useState('')

  const addTag = () => {
    if (input && !tags.includes(input)) {
      setTags([...tags, input])
      setInput('')
    }
  }

  const removeTag = (tag) => {
    setTags(tags.filter((t) => t !== tag))
  }

  return (
    <Box>
      <HStack spacing={2} wrap="wrap" mb={2}>
        {tags.map((tag) => (
          <Tag key={tag} size="md" borderRadius="full" variant="solid" colorScheme="blue">
            <TagLabel>{tag}</TagLabel>
            <TagCloseButton onClick={() => removeTag(tag)} />
          </Tag>
        ))}
      </HStack>
      <Input
        value={input}
        onChange={(e) => setInput(e.target.value)}
        onKeyDown={(e) => e.key === 'Enter' && addTag()}
        placeholder="添加标签"
        size="sm"
      />
    </Box>
  )
}

Tag 属性速查表 #

属性 说明
size 尺寸 sm, md, lg
variant 变体 subtle, solid, outline
colorScheme 颜色方案 green, red, blue…
borderRadius 圆角 尺寸值

下一步 #

现在你已经掌握了 Tag 组件,接下来学习 Alert 警告,了解如何展示警告提示!

最后更新:2026-03-28