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/최대로 이동합니다
  • 반별 모드에서 키보드는 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?: LhSxProps
}

상수 ​

이 컴포넌트에서 사용하는 공개 상수는 다음과 같습니다(Props 표의 타입/기본값 열에서 같은 이름의 항목을 클릭하면 이곳으로 이동합니다):

LH_RATE_MAX_DEFAULT (출처: @lh-ui/share/core/rate)
ts
/** 기본 별 개수 */
export const LH_RATE_MAX_DEFAULT = 5

국풍의 아름다움으로 코드의 토대를 세웁니다