Spinner 加载组件 #

基本用法 #

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

function Example() {
  return <Spinner />
}

加载尺寸 #

jsx
<Spinner size="xs" />
<Spinner size="sm" />
<Spinner size="md" />
<Spinner size="lg" />
<Spinner size="xl" />

加载颜色 #

jsx
<Spinner color="red.500" />
<Spinner color="blue.500" />
<Spinner color="green.500" />
<Spinner color="orange.500" />

加载速度 #

jsx
<Spinner speed="0.5s" />
<Spinner speed="1s" />
<Spinner speed="2s" />

加载厚度 #

jsx
<Spinner thickness="2px" />
<Spinner thickness="4px" />
<Spinner thickness="6px" />

空白颜色 #

jsx
<Spinner emptyColor="gray.200" color="blue.500" />

实用示例 #

居中加载 #

jsx
function CenteredSpinner() {
  return (
    <Flex justify="center" align="center" h="200px">
      <Spinner size="xl" />
    </Flex>
  )
}

带文字加载 #

jsx
function LoadingWithText() {
  return (
    <HStack spacing={4}>
      <Spinner />
      <Text color="gray.500">加载中...</Text>
    </HStack>
  )
}

全屏加载 #

jsx
function FullPageLoader() {
  return (
    <Flex
      position="fixed"
      top={0}
      left={0}
      right={0}
      bottom={0}
      justify="center"
      align="center"
      bg="white"
      zIndex="overlay"
    >
      <VStack spacing={4}>
        <Spinner size="xl" color="blue.500" />
        <Text color="gray.500">正在加载...</Text>
      </VStack>
    </Flex>
  )
}

按钮加载状态 #

jsx
function LoadingButton({ isLoading, children, ...props }) {
  return (
    <Button {...props} isDisabled={isLoading}>
      {isLoading ? <Spinner size="sm" mr={2} /> : null}
      {children}
    </Button>
  )
}

Spinner 属性速查表 #

属性 说明
size 尺寸 xs, sm, md, lg, xl
color 颜色 颜色值
speed 速度 时间值
thickness 厚度 尺寸值
emptyColor 空白颜色 颜色值

下一步 #

现在你已经掌握了 Spinner 组件,接下来学习 Menu 菜单,了解如何使用下拉菜单组件!

最后更新:2026-03-28