Rate 评分
Rate 用一排图标(默认是星星)选一个评分。悬停时预览分值,点击选中。它是一个单选组,键盘和读屏软件把每个分值当作一个选项。
演示
基础用法
给评分加 aria-label(或 aria-labelledby),说明评的是什么。
尺寸
size 可以是 small、medium、large,或者以像素为单位的图标大小。
数量
count 设置图标个数,也就是最高分。
半星
开启 allowHalf 后,点图标的前半边选半分。
只读
readonly 只展示分值,比如平均分。加上 allowHalf 可以显示半个图标。
可清空
开启 clearable 后,再次选中当前分值会把它清空为 null。
颜色
color 替换这个评分的填充色。尽量用 var(--rw-alias-fill-accent) 这类别名,这样会跟着主题变化。
图标
icon 替换星星。图标用 currentColor 绘制,才能跟随空和满的颜色。
受控
传入 value 和 onUpdateValue 自己管理状态。指针在图标上时,onUpdateHoverValue 报告正在预览的分值。
无障碍
评分是一个 role="radiogroup",每个分值一个 role="radio",标签形如“3 分,满分 5 分”(开启 allowHalf 时每个图标两个,所以也会读出“2.5 分”)。只有选中的那个在 Tab 顺序里。方向键逐步调整分值,Home 和 End 跳到最低和最高,Space 和 Enter 选中当前聚焦的选项。开启 clearable 时,Delete、Backspace 以及退到最低分以下都会清空。readonly 的评分是一个 role="img",标签读出分值,如果传了 aria-label 就接在它后面。标签文案来自 locale(Rate.valueText)。
属性
| 名称 | 类型 | 默认值 | 说明 | 版本 |
|---|---|---|---|---|
value | number | null | undefined | 受控时的当前值,null 表示未评分。 | 未发布 |
defaultValue | number | null | null | 非受控时的初始值。 | 未发布 |
onUpdateValue | (value: number | null) => void | undefined | 用户选中或清空分值时调用。 | 未发布 |
onUpdateHoverValue | (value: number | null) => void | undefined | 预览的分值变化时调用,指针离开时为 null。 | 未发布 |
onClear | () => void | undefined | 分值被清空后调用。 | 未发布 |
count | number | 5 | 图标个数,也就是最高分。 | 未发布 |
allowHalf | boolean | false | 允许半分。 | 未发布 |
clearable | boolean | false | 再次选中当前分值时清空。 | 未发布 |
readonly | boolean | false | 只展示分值,不能修改。 | 未发布 |
size | small | medium | large | number | medium | 图标大小,数字以像素为单位。 | 未发布 |
color | string | undefined | 满图标的颜色。 | 未发布 |
icon | ReactNode | 星星 | 替换星星。 | 未发布 |
Rate 也接受原生 div 属性和 ref。自定义图标用 icon 属性。