Skip to content
API 风格:

Rate 評分 ​

星級評分:唯讀展示 / 互動打分 / 半星 / 自訂字元與數量。

基礎用法 ​

基礎用法
vue
<script setup>
import { ref } from 'vue'
const rate1 = ref(3)
</script>

<template>
  <LhRate v-model="rate1" />
</template>
vue
<script>
export default {
  data() {
    return { rate1: 3 }
  },
}
</script>

<template>
  <LhRate v-model="rate1" />
</template>

半星與唯讀 ​

半星 / 唯讀
vue
<script setup>
import { ref } from 'vue'
const rate2 = ref(3.5)
</script>

<template>
  <div class="demo-rate-row">
    <LhRate v-model="rate2" allow-half />
    <LhRate :model-value="4.5" readonly allow-half show-score />
  </div>
</template>
vue
<script>
export default {
  data() {
    return { rate2: 3.5 }
  },
}
</script>

<template>
  <div class="demo-rate-row">
    <LhRate v-model="rate2" allow-half />
    <LhRate :model-value="4.5" readonly allow-half show-score />
  </div>
</template>

max 自訂星級總數,disabled 停用互動,character 自訂評分符號。

自訂
vue
<script setup>
import { ref } from 'vue'
const rate3 = ref(8)
const rate4 = ref(3)
const rate5 = ref(4)
</script>

<template>
  <div class="demo-rate-row">
    <LhRate v-model="rate3" :max="10" />
    <LhRate v-model="rate4" disabled />
    <LhRate v-model="rate5" character="茶" />
  </div>
</template>
vue
<script>
export default {
  data() {
    return { rate3: 8, rate4: 3, rate5: 4 }
  },
}
</script>

<template>
  <div class="demo-rate-row">
    <LhRate v-model="rate3" :max="10" />
    <LhRate v-model="rate4" disabled />
    <LhRate v-model="rate5" character="茶" />
  </div>
</template>

API ​

LhRate Props ​

屬性名說明類型預設值
modelValue目前評分(受控 v-model)number0
max星數上限number5
allowHalf允許半星booleanfalse
readonly唯讀(輸出星級文字供螢幕閱讀器朗讀)booleanfalse
disabled停用booleanfalse
character自訂字元string—
showScore顯示分數文字booleanfalse
scoreTemplate分數模板({n} 佔位)string—
sxsx 快速版面配置屬性LhSxProps—

Events ​

事件名說明回呼參數
update:modelValue評分變化時觸發,搭配 v-model 使用(value: number)
change評分變化時觸發(點選與鍵盤操作均會觸發)(value: number)

無障礙 ​

  • 互動態為 role="radiogroup",每顆星為真實可聚焦按鈕(roving tabindex),方向鍵調分、Home/End 歸零/打滿
  • 半星模式鍵盤按 0.5 步進
  • 唯讀態輸出 role="img" + aria-label="n 星" 供螢幕閱讀器朗讀
  • :focus-visible 焦點環

類型定義 ​

本元件對外匯出的 TypeScript 類型結構如下(自動提取自 packages/components/rate/src/types.ts 與 @lh-ui/share/core/* 原始碼,點選各條目展開檢視完整定義;屬性說明見上方 Props 表):

LhRateProps
ts
export interface LhRateProps {
  /** 目前評分(受控 v-model) */
  modelValue?: number
  /** 星數上限 */
  max?: number
  /** 允許半星 */
  allowHalf?: boolean
  /** 唯讀(輸出星級文字供螢幕閱讀器朗讀) */
  readonly?: boolean
  disabled?: boolean
  /** 自訂字元(預設 ★) */
  character?: string
  /** 顯示分數文字 */
  showScore?: boolean
  /** 分數模板({n} 佔位) */
  scoreTemplate?: string
  /** sx 快速版面配置屬性 */
  sx?: LhSxProps
}

常數 ​

本元件用到的公開常數如下(可在 Props 表的「類型 / 預設值」列點選同名條目跳轉至此):

LH_RATE_MAX_DEFAULT (來自 @lh-ui/share/core/rate)
ts
/** 預設星數 */
export const LH_RATE_MAX_DEFAULT = 5