更新记录

1.0.0(2025-12-07) 下载此版本

appx-rate 是基于 uni-app x 开发的通用评分组件,支持全星 / 半星评分、自定义图标 / 颜色 / 样式、只读 / 禁用状态,适配多端运行,满足各类评分场景需求。


平台兼容性

uni-app x(4.87)

Chrome Safari Android iOS 鸿蒙 微信小程序

appx-rate 评分组件

appx-rate 是基于 uni-app x 开发的通用评分组件,支持全星/半星评分、自定义图标/颜色/样式、只读/禁用状态,适配多端运行,满足各类评分场景需求。

组件特性

  • 支持全星/半星评分模式切换;
  • 自定义星星图标(文本/字体图标)、颜色、尺寸;
  • 支持评分文本展示,支持占位符动态替换评分值;
  • 提供只读/禁用状态,自定义样式穿透;
  • 适配移动端触摸交互,支持点击/滑动评分;
  • 完善的类型定义,兼容字符串/数字类型的属性传入。

快速使用

基础用法

<template>
  <appx-rate v-model="rate" />
</template>

<script lang="uts" setup>
const rate = ref(3);
</script>

半星评分

<appx-rate v-model="rate" allow-half="true" />

显示评分文本

<appx-rate v-model="rate" show-text="true" text="当前评分:{value}星" />

只读状态

<appx-rate v-model="rate" readonly="true" />

属性说明

属性名 类型 默认值 说明
modelValue number / string 0 绑定值,当前评分(支持半星,如 2.5)
count number / string 5 星星总数
allowHalf boolean / string false 是否支持半星评分(字符串值需传 "true"/"false")
readonly boolean / string false 是否只读(不可点击/触摸修改评分)
disabled boolean / string false 是否禁用(视觉置灰,不可交互)
normalIcon string 未选中状态图标(支持文本、字体图标如 iconfont 类名)
activeIcon string 选中状态图标
halfIcon string 半星状态图标(allowHalf 为 true 时生效)
iconSize number / string 24px 星星图标大小(支持 px/rpx 单位,数字自动补 px)
normalColor string #E5E5E5 未选中状态颜色
activeColor string #FFD100 选中状态颜色
halfColor string #FFD100 半星状态颜色
iconFontFamily string '' 字体图标库字体家族(如 iconfont,需先引入字体库)
showText boolean / string false 是否显示评分文本
text string {value}分 评分文本内容,{value} 为评分值占位符
textSize number / string 14px 评分文本大小
textColor string #666666 评分文本颜色
textMargin number / string 8px 文本与星星的间距(默认左间距)
containerStyle object / string {} 容器自定义样式(支持对象/JSON 字符串)
starItemStyle object / string {} 星星项自定义样式
starIconStyle object / string {} 星星图标自定义样式
textStyle object / string {} 评分文本自定义样式

事件说明

事件名 触发时机 回调参数 说明
update:modelValue 评分值变更时 value: number v-model 绑定的更新事件,返回当前评分
change 评分值变更时 value: number 评分变更事件,返回当前评分

样式自定义示例

自定义星星颜色和大小

<appx-rate
  v-model="rate"
  icon-size="32rpx"
  normal-color="#CCCCCC"
  active-color="#FF5722"
/>

使用字体图标(如 iconfont)

<!-- 需先全局引入 iconfont 字体库 -->
<appx-rate
  v-model="rate"
  normal-icon="&#xe601;"
  active-icon="&#xe602;"
  icon-font-family="iconfont"
/>

自定义容器和星星样式

<appx-rate
  v-model="rate"
  :container-style="{ padding: '10px' }"
  :star-item-style="{ marginRight: '6px' }"
/>
<!-- 或传入 JSON 字符串 -->
<appx-rate
  v-model="rate"
  container-style="{ 'padding': '10px' }"
  star-item-style="{ 'margin-right': '6px' }"
/>

注意事项

  1. 属性值兼容字符串类型(如 allow-half="true"),组件内部会自动解析为对应类型;
  2. 使用字体图标时,需确保已全局引入字体库,并正确设置 iconFontFamily
  3. 半星模式下,点击星星会切换“半星/全星”状态(如点击第3颗星,会在 2.5/3 之间切换);
  4. 禁用/只读状态下,组件会自动置灰(opacity: 0.6)且禁止交互;
  5. 样式传入字符串时,需遵循 JSON 格式(如 "{ 'font-size': '14px' }"),组件内部会自动解析。

常见问题

Q:半星模式下,评分值为什么是 x.5?

A:半星模式下,评分值以 0.5 为步长(如 1.5、2.5),这是组件默认的半星评分逻辑,符合通用评分场景的交互习惯。

Q:如何修改星星之间的间距?

A:可通过 starItemStyle 属性设置 margin-right,或直接覆盖组件的 scoped 样式(需使用 ::v-deep):

::v-deep .appx-rate-star-item {
  margin-right: 8px;
}

Q:评分文本的占位符不生效?

A:需确保 text 属性中包含 {value} 占位符,组件会自动替换为当前评分值(如 text="评分:{value}分")。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。