跳到正文

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)。

属性

名称类型默认值说明版本
valuenumber | nullundefined受控时的当前值,null 表示未评分。未发布
defaultValuenumber | nullnull非受控时的初始值。未发布
onUpdateValue(value: number | null) => voidundefined用户选中或清空分值时调用。未发布
onUpdateHoverValue(value: number | null) => voidundefined预览的分值变化时调用,指针离开时为 null。未发布
onClear() => voidundefined分值被清空后调用。未发布
countnumber5图标个数,也就是最高分。未发布
allowHalfbooleanfalse允许半分。未发布
clearablebooleanfalse再次选中当前分值时清空。未发布
readonlybooleanfalse只展示分值,不能修改。未发布
sizesmall | medium | large | numbermedium图标大小,数字以像素为单位。未发布
colorstringundefined满图标的颜色。未发布
iconReactNode星星替换星星。未发布

Rate 也接受原生 div 属性和 ref。自定义图标用 icon 属性。