跳转到内容

Rating 评分

用于用户反馈和评论的星级评分。

import { Rating } from 'asterui'

基础评分

无需配置的简单 5 星评分。

import { Rating } from 'asterui'

function App() {
  return (
      <Rating defaultValue={3} />
    )
}

export default App

可清除

再次点击相同的星星以清除评分。

import { Rating } from 'asterui'

function App() {
  return (
      <Rating defaultValue={3} allowClear />
    )
}

export default App

不同尺寸

各种尺寸的评分。

xs
sm
md
lg
xl
import { Rating, Space } from 'asterui'

function App() {
  return (
      <Space direction="vertical" size="sm">
        <div className="flex items-center gap-4"><span className="w-8 text-xs opacity-70">xs</span><Rating size="xs" defaultValue={3} /></div>
        <div className="flex items-center gap-4"><span className="w-8 text-xs opacity-70">sm</span><Rating size="sm" defaultValue={3} /></div>
        <div className="flex items-center gap-4"><span className="w-8 text-xs opacity-70">md</span><Rating size="md" defaultValue={3} /></div>
        <div className="flex items-center gap-4"><span className="w-8 text-xs opacity-70">lg</span><Rating size="lg" defaultValue={3} /></div>
        <div className="flex items-center gap-4"><span className="w-8 text-xs opacity-70">xl</span><Rating size="xl" defaultValue={3} /></div>
      </Space>
    )
}

export default App

半星

允许半星精度。

md
lg
import { Rating, Space } from 'asterui'

function App() {
  return (
      <Space direction="vertical" size="sm">
        <div className="flex items-center gap-4"><span className="w-8 text-xs opacity-70">md</span><Rating defaultValue={2.5} allowHalf /></div>
        <div className="flex items-center gap-4"><span className="w-8 text-xs opacity-70">lg</span><Rating defaultValue={2.5} allowHalf size="lg" /></div>
      </Space>
    )
}

export default App

心形

带有心形图标的评分。

import { Rating } from 'asterui'

function App() {
  return (
      <Rating defaultValue={4} mask="heart" color="bg-error" />
    )
}

export default App

自定义颜色

使用 Rating.Item 为每个评分级别设置不同的颜色。

import { Rating } from 'asterui'

function App() {
  return (
      <Rating defaultValue={3}>
        <Rating.Item value={1} color="bg-error" />
        <Rating.Item value={2} color="bg-warning" />
        <Rating.Item value={3} color="bg-warning" />
        <Rating.Item value={4} color="bg-success" />
        <Rating.Item value={5} color="bg-success" />
      </Rating>
    )
}

export default App

禁用

显示评分而不交互。

import { Rating } from 'asterui'

function App() {
  return (
      <Rating value={4} disabled />
    )
}

export default App

自定义数量

指定不同数量的星星。

import { Rating } from 'asterui'

function App() {
  return (
      <Rating defaultValue={7} count={10} />
    )
}

export default App

受控评分

从外部控制评分值。

Current rating: 0

import { Rating } from 'asterui'
import { useState } from 'react'

function App() {
  const [rating, setRating] = useState(0)
  
  return (
      <div>
        <Rating value={rating} onChange={setRating} />
        <p className="mt-2">Current rating: {rating}</p>
      </div>
    )
}

export default App

替代星星

不同的星星样式。

import { Rating } from 'asterui'

function App() {
  return (
      <Rating defaultValue={3} mask="star" color="bg-success" />
    )
}

export default App

表单集成

评分与表单验证配合使用。

 

import { Rating, Form, notification, Button } from 'asterui'

function App() {
  const handleSubmit = (values: { rating?: number }) => {
    notification.success({ message: 'Submitted!', description: `Rating: ${values.rating}` })
  }
  
  return (
      <Form onFinish={handleSubmit} initialValues={{ rating: 3 }}>
        <Form.Item
          name="rating"
          label="Your rating"
          rules={{ required: 'Please provide a rating' }}
        >
          <Rating />
        </Form.Item>
        <Button htmlType="submit" color="primary">Submit</Button>
      </Form>
    )
}

export default App
属性描述类型默认值
children自定义 Rating.Item 组件(可选)React.ReactNode-
value受控评分值number-
defaultValue默认评分值(非受控)number0
onChange评分更改时的回调(value: number) => void-
onHoverChange悬停值更改时的回调(value: number) => void-
count星星数量number5
size评分大小'xs' | 'sm' | 'md' | 'lg' | 'xl'-
gap星星之间的间距'none' | 'xs' | 'sm' | 'md' | 'lg''md'
colorTailwind 背景颜色类string'bg-warning'
mask评分图标的形状'star' | 'star-2' | 'heart''star-2'
allowClear允许通过点击相同值清除评分booleantrue
allowHalf允许半星选择booleanfalse
disabled禁用状态(非交互式)booleanfalse
className额外的 CSS 类string-
data-testid用于测试的测试 IDstring-
属性描述类型默认值
value此项目代表的评分值number-
mask评分图标的形状'star' | 'star-2' | 'heart''star-2'
colorTailwind 背景颜色类string'bg-warning'
hidden用于清除评分的隐藏项目booleanfalse
half半星位置'first' | 'second'-
className额外的 CSS 类string-
data-testid用于测试的测试 IDstring-
  • 使用 role="radiogroup" 以获得正确的语义
  • 使用单选按钮模式进行评分选择
  • 每个星星都有描述其值的 aria-label
  • 评分选项之间的键盘导航
  • 悬停预览在选择之前显示视觉反馈
  • 禁用状态在显示值时阻止交互