UI Design System
build dev

Rate

输入评分。中文惯用名:评分。
稳定本期新增已接入

元信息

字段值
规范 IDcomponent.rate
名称Rate
二级分类数据录入(data-entry)
用途输入评分
描述中文惯用名:评分。

预览

静态结构:Rate 渲染为 data-slot="rate" 的 radiogroup 容器,内部每星为 data-slot="rate-star" 节点——lucide Star 图标叠加透明 button 点击区(allowHalf 时拆为左 / 右两个半区,分别得 x.5 与整数);选中星以 warning 色填充,半星以左半裁剪层呈现。Form 内声明 name 时外层包 FieldShell(label + 校验错误),控件本体为内联星组。

DSL 结构

DslNode
{
  "type": "Rate",
  "props": {
    "name": "satisfaction",
    "value": 4,
    "count": 5,
    "allowHalf": true
  },
  "events": {
    "onChange": {
      "action": "setState",
      "params": {
        "satisfaction": "${event}"
      }
    }
  }
}

何时用

何时使用

  • 输入用户对内容、商品、服务的满意度或质量评分(如 1-5 星)。
  • 评论、反馈表单中的轻量评分字段;精度要求不高、强调直观表达。
  • 半星精度场景(allowHalf)满足更细的评分粒度。

何时不用

  • 精确数值输入或大范围连续取值:使用 NumberInput 或 Slider——Rate 语义是「评分」,值域小且离散。
  • 单纯展示评分结果(不允许修改):使用数据展示组件渲染,不要把 Rate 只读使用。
  • 二元的好 / 不好反馈:使用 RadioGroup 或 Switch 更直白。

变体

变体视觉形态适用场景
整数评分(缺省)count 颗星,点击整星得整数分常规 1-5 星满意度评价
allowHalf 半星每星拆左 / 右两个点击区,可出现半星填充需要 0.5 步进精度的评分(如课程、酒店)
count 自定义星数星数按 count 渲染,缺省 5非 5 档评分体系(如 10 分制拆 10 星)
disabled 禁用星组半透明,点击区禁用历史评分回显、无权限修改

API 属性

属性类型默认值说明
namestring—字段名;在 Form 内声明即自动成为表单项
labelstring—表单项标签(FieldShell 呈现)
rulesFieldRule[]—校验规则
valuenumber—受控值(独立渲染时生效);Form 内作为字段初始值(优先于 Form initialValues)
countnumber5星总数
allowHalfbooleanfalse允许半星:点击星左半得 x.5,右半得整数
disabledbooleanfalse禁用,星组半透明且不可点击
onChange(value: number) => void—评分变化事件,传出 number(DSL 语义值)
classNamestring—根节点 class(Form 内为 form-item 容器,独立渲染时为控件本身)
styleCSSProperties—根节点内联样式(同 className 的挂载规则)

使用规范

  • 评分值域保持小而离散;count 缺省 5,非必要不改动,避免与常见 5 星心智冲突。
  • 需要 0.5 步进再开 allowHalf;开了就不要在展示层四舍五入成整数。
  • Form 内声明 name 后配合 rules 做必填校验(如评价提交必须打分)。
  • onChange 传出 number;半星场景值为 x.5,落库字段需支持小数。
  • 不用 Rate 做只读展示:展示场景禁用交互语义,避免用户误以为可改。

正例

  • ✓ 评价表单:Rate 声明 name 与必填 rules,提交时校验「请打分」。
  • ✓ 酒店评分:allowHalf 开启,用户可打 4.5 分,onChange 传出 4.5。
  • ✓ 只读回显:disabled 渲染历史评分,配合文字「4.5 分」辅助说明。

反例

  • ✕ 用 Rate 录入价格、数量等精确数值(应使用 NumberInput / Slider)。
  • ✕ 把 Rate 当展示组件长期 disabled 使用,用户反复点击无响应。
  • ✕ allowHalf 评分落库到整数字段,0.5 分被静默截断。

Design Token 映射

不适用:组件 tokenRefs 为空:样式 Token 数据尚未接入,三层映射(Primitive → Semantic → Component)待样式 Token 接入后回填。