Skip to content

评分 Rate

何时使用

  • 对评价进行展示
  • 对事物进行快速的评级操作

基本使用

Show Code
vue
<script setup lang="ts">
import { ref, watchEffect } from 'vue'

const value = ref(2.99)
watchEffect(() => {
  console.log('value:', value.value)
})
</script>
<template>
  <Rate v-model:value="value" />
</template>

禁用

Show Code
vue
<script setup lang="ts">
import { ref, watchEffect } from 'vue'

const value = ref(2.99)
watchEffect(() => {
  console.log('value:', value.value)
})
</script>
<template>
  <Rate v-model:value="value" disabled />
</template>

空心星型

Show Code
vue
<script setup lang="ts">
import { ref, watchEffect } from 'vue'

const value = ref(2.99)
watchEffect(() => {
  console.log('value:', value.value)
})
</script>
<template>
  <Rate character="star-outlined" :size="30" v-model:value="value" />
</template>

实心心型

Show Code
vue
<script setup lang="ts">
import { ref, watchEffect } from 'vue'

const value = ref(2.99)
watchEffect(() => {
  console.log('value:', value.value)
})
</script>
<template>
  <Rate character="heart-filled" :size="30" v-model:value="value" />
</template>

空心心型

Show Code
vue
<script setup lang="ts">
import { ref, watchEffect } from 'vue'

const value = ref(2.99)
watchEffect(() => {
  console.log('value:', value.value)
})
</script>
<template>
  <Rate character="heart-outlined" :size="30" v-model:value="value" />
</template>

支持选中半星

Show Code
vue
<script setup lang="ts">
import { ref, watchEffect } from 'vue'

const value = ref(2.99)
watchEffect(() => {
  console.log('value:', value.value)
})
</script>
<template>
  <Rate v-model:value="value" allow-half />
</template>

使用中文文字: 好

Show Code
vue
<script setup lang="ts">
import { ref, watchEffect } from 'vue'

const value = ref(2.99)
watchEffect(() => {
  console.log('value:', value.value)
})
function onChange (value: number) {
  console.log('change value:', value)
}
function onHoverChange (value: number) {
  console.log('hover value:', value)
}
</script>
<template>
  <Rate
    character="好"
    :size="36"
    v-model:value="value"
    @change="onChange"
    @hover-change="onHoverChange" />
</template>

使用英文字母: A

A
A
A
A
A
Show Code
vue
<script setup lang="ts">
import { ref, watchEffect } from 'vue'

const value = ref(2.99)
watchEffect(() => {
  console.log('value:', value.value)
})
function onChange (value: number) {
  console.log('change value:', value)
}
function onHoverChange (value: number) {
  console.log('hover value:', value)
}
</script>
<template>
  <Rate
    character="A"
    :size="48"
    v-model:value="value"
    @change="onChange"
    @hover-change="onHoverChange" />
</template>

自定义选中颜色

Show Code
vue
<script setup lang="ts">
import { ref, watchEffect } from 'vue'

const value = ref(2.99)
watchEffect(() => {
  console.log('value:', value.value)
})
</script>
<template>
  <Rate color="#1677FF" :size="30" v-model:value="value" />
</template>

自定义间距

Show Code
vue
<script setup lang="ts">
import { ref, watchEffect } from 'vue'

const value = ref(2.99)
watchEffect(() => {
  console.log('value:', value.value)
})
</script>
<template>
  <Rate :size="30" :gap="16" v-model:value="value" />
</template>

自定义 star 总数

Show Code
vue
<script setup lang="ts">
import { ref, watchEffect } from 'vue'

const value = ref(2.99)
watchEffect(() => {
  console.log('value:', value.value)
})
</script>
<template>
  <Rate :size="30" :count="10" v-model:value="value" />
</template>

APIs

参数说明类型默认值必传
allowClear是否允许再次点击后清除booleantruefalse
allowHalf是否允许半选booleanfalsefalse
countstar 总数number5false
character自定义字符,预置 'star-outlined' 'star-filled' 'heart-outlined' 'heart-filled' 四种svg图标string | slot'star-filled'false
size字符时是字体高度,图标时是图片大小number20false
color字符选中颜色string'#fadb14'false
gap字符间距,单位pxnumber8false
disabled只读,无法进行交互booleanfalsefalse
value
v-model
当前数,受控值 1,2,3...number0false

Events

事件名称说明参数
change选择时的回调(value: number) => void
hoverChange鼠标经过时数值变化的回调(value: number) => void

Released under the MIT License.