Skip to content
本页导读

Rate

组件类型:UxRateComponentPublicInstance

支持设置数量、最小选择、半星选择、触摸/鼠标拖动选择

平台兼容性

UniApp X

AndroidiOSweb鸿蒙 Next小程序
x

UniApp Vue Nvue

AndroidiOSweb鸿蒙 Next小程序
xxxx

Props

属性名类型默认值说明
nameString标识符,在回调事件中返回
themeString主题颜色
valueNumber分数
countNumber5数量
minCountNumber0最小选择数量
colorString$ux.Conf.placeholderColor颜色
darkColorString深色none-不显示,auto-自动适配深色模式,其他-颜色
activeColorString$ux.Conf.primaryColor选中颜色优先级高于主题
activeDarkColorString深色none-不显示,auto-自动适配深色模式,其他-颜色
sizeAny$ux.Conf.fontSize字体大小
gutterAny5间距
typeStringstar类型
iconString星星图标优先级高于type
halfBooleanfalse允许半星halfIcon配置时有效
halfIconString半星图标half=true时有效
customFontString网络字体路径或自定义字体路径
customFamilyString字体family
valueFormatString__s1__分格式化文本,有则显示
touchableBooleanfalse触摸滑动
disabledBooleanfalse禁用
readonlyBooleanfalse只读
marginArray边距[上右下左][上下左右][上下左右]
mtAny距上单位px
mrAny距右单位px
mbAny距下单位px
mlAny距左单位px
paddingArray填充[上右下左][上下左右][上下左右]
ptAny上内边距单位px
prAny右内边距单位px
pbAny下内边距单位px
plAny左内边距单位px
xstyleArray自定义样式

theme

说明
primary主色
warning警告
success成功
error错误
info文本

darkColor

说明
none不显示
auto自动适配深色模式
color其他颜色

activeDarkColor

说明
none不显示
auto自动适配深色模式
color其他颜色

type

说明
star星星
heart爱心

Events

事件名说明参数
change值改变时触发
touchstart开始触摸时触发
touchmove正在触摸时触发
touchend触摸结束时触发

示例代码

html
<template>
	<ux-page :stack="showDoc">
		<ux-navbar :title="title" :bold="true">
			<template v-slot:right>
				<!-- #ifndef MP -->
				<ux-button theme="text" icon="/static/tip.png" :icon-size="22" @click="onDoc()"></ux-button>
				<!-- #endif -->
			</template>
		</ux-navbar>
		
		<ux-scroll>
			<ux-card direction="column" icon="flag-filled" title="评分" :bold="true">
				<ux-text text="支持设置数量、最小选择、半星选择、触摸/鼠标拖动选择"></ux-text>
			</ux-card>
			
			<ux-card direction="column" icon="arrowright" title="主题" :bold="true">
				<ux-text text="多种主题可配置,适配暗黑模式" :mb="15"></ux-text>
				<ux-col>
					<ux-rate theme="warning" :value="value" :size="28" @change="change"></ux-rate>
					<ux-rate theme="success" :value="value" :mt="10" :size="22" @change="change"></ux-rate>
				</ux-col>
			</ux-card>
			
			<ux-card direction="column" icon="arrowright" title="样式" :bold="true">
				<ux-text text="默认支持星星、爱心、半星,也可自定义评分图标" :mb="15"></ux-text>
				<ux-col>
					<ux-rate type="heart" :value="value" :size="24" @change="change"></ux-rate>
					<ux-rate :half="true" type="star" theme="success" :size="24" :value="value1" :mt="10" @change="change1"></ux-rate>
				</ux-col>
			</ux-card>
			
			<ux-card direction="column" icon="arrowright" title="触摸选择" :bold="true">
				<ux-text text="支持手指触摸/鼠标拖动快速选择" :mb="15"></ux-text>
				<ux-col>
					<ux-rate type="heart" theme="error" :touchable="true" :value="value" :size="24" @change="change"></ux-rate>
					<ux-rate :half="true" type="star" :touchable="true" :value="value1" :size="24" :mt="10" @change="change1"></ux-rate>
				</ux-col>
			</ux-card>
			
			<ux-card direction="column" icon="arrowright" title="文本" :bold="true">
				<ux-text text="支持文本格式化,替换文本中所有__s1__为当前值" :mb="15"></ux-text>
				<ux-col>
					<ux-rate type="heart" :value="value" value-format="送您__s1__颗爱心??" :size="18" @change="change"></ux-rate>
					<ux-rate :half="true" type="star" theme="success" :value="value1" value-format="给我__s1__星好评哦~" :size="18" :mt="10" @change="change1"></ux-rate>
				</ux-col>
			</ux-card>
			
			<ux-card direction="column" icon="arrowright" title="数量" :bold="true">
				<ux-text text="可配置总评分数和最小选择" :mb="15"></ux-text>
				<ux-col>
					<ux-rate active-color="yellow" :count="10" :value="value" :size="24" @change="change"></ux-rate>
					<ux-rate theme="warning" type="heart" :min-count="4" :count="8" :value="value" :size="24" :mt="10" @change="change"></ux-rate>
				</ux-col>
			</ux-card>
			
			<ux-card direction="column" icon="arrowright" title="禁用/只读" :bold="true">
				<ux-text text="支持禁用组件、只读状态" :mb="15"></ux-text>
				<ux-col>
					<ux-rate :half="true" type="star" :disabled="true" :value="3.5" :size="24"></ux-rate>
					<ux-rate type="heart" theme="error" :readonly="true" :value="3" :size="24" :mt="10"></ux-rate>
				</ux-col>
			</ux-card>
			
			<ux-placeholder :height="200">
				<ux-col justify="center" align="center" style="height: 100%;">
					<ux-text prefix-icon="soapbubble-filled" text="真的没有了~"></ux-text>
				</ux-col>
			</ux-placeholder>
		</ux-scroll>
	</ux-page>
</template>
<template>
	<ux-page :stack="showDoc">
		<ux-navbar :title="title" :bold="true">
			<template v-slot:right>
				<!-- #ifndef MP -->
				<ux-button theme="text" icon="/static/tip.png" :icon-size="22" @click="onDoc()"></ux-button>
				<!-- #endif -->
			</template>
		</ux-navbar>
		
		<ux-scroll>
			<ux-card direction="column" icon="flag-filled" title="评分" :bold="true">
				<ux-text text="支持设置数量、最小选择、半星选择、触摸/鼠标拖动选择"></ux-text>
			</ux-card>
			
			<ux-card direction="column" icon="arrowright" title="主题" :bold="true">
				<ux-text text="多种主题可配置,适配暗黑模式" :mb="15"></ux-text>
				<ux-col>
					<ux-rate theme="warning" :value="value" :size="28" @change="change"></ux-rate>
					<ux-rate theme="success" :value="value" :mt="10" :size="22" @change="change"></ux-rate>
				</ux-col>
			</ux-card>
			
			<ux-card direction="column" icon="arrowright" title="样式" :bold="true">
				<ux-text text="默认支持星星、爱心、半星,也可自定义评分图标" :mb="15"></ux-text>
				<ux-col>
					<ux-rate type="heart" :value="value" :size="24" @change="change"></ux-rate>
					<ux-rate :half="true" type="star" theme="success" :size="24" :value="value1" :mt="10" @change="change1"></ux-rate>
				</ux-col>
			</ux-card>
			
			<ux-card direction="column" icon="arrowright" title="触摸选择" :bold="true">
				<ux-text text="支持手指触摸/鼠标拖动快速选择" :mb="15"></ux-text>
				<ux-col>
					<ux-rate type="heart" theme="error" :touchable="true" :value="value" :size="24" @change="change"></ux-rate>
					<ux-rate :half="true" type="star" :touchable="true" :value="value1" :size="24" :mt="10" @change="change1"></ux-rate>
				</ux-col>
			</ux-card>
			
			<ux-card direction="column" icon="arrowright" title="文本" :bold="true">
				<ux-text text="支持文本格式化,替换文本中所有__s1__为当前值" :mb="15"></ux-text>
				<ux-col>
					<ux-rate type="heart" :value="value" value-format="送您__s1__颗爱心??" :size="18" @change="change"></ux-rate>
					<ux-rate :half="true" type="star" theme="success" :value="value1" value-format="给我__s1__星好评哦~" :size="18" :mt="10" @change="change1"></ux-rate>
				</ux-col>
			</ux-card>
			
			<ux-card direction="column" icon="arrowright" title="数量" :bold="true">
				<ux-text text="可配置总评分数和最小选择" :mb="15"></ux-text>
				<ux-col>
					<ux-rate active-color="yellow" :count="10" :value="value" :size="24" @change="change"></ux-rate>
					<ux-rate theme="warning" type="heart" :min-count="4" :count="8" :value="value" :size="24" :mt="10" @change="change"></ux-rate>
				</ux-col>
			</ux-card>
			
			<ux-card direction="column" icon="arrowright" title="禁用/只读" :bold="true">
				<ux-text text="支持禁用组件、只读状态" :mb="15"></ux-text>
				<ux-col>
					<ux-rate :half="true" type="star" :disabled="true" :value="3.5" :size="24"></ux-rate>
					<ux-rate type="heart" theme="error" :readonly="true" :value="3" :size="24" :mt="10"></ux-rate>
				</ux-col>
			</ux-card>
			
			<ux-placeholder :height="200">
				<ux-col justify="center" align="center" style="height: 100%;">
					<ux-text prefix-icon="soapbubble-filled" text="真的没有了~"></ux-text>
				</ux-col>
			</ux-placeholder>
		</ux-scroll>
	</ux-page>
</template>
ts
<script setup>
	
	import * as plus from '@/uni_modules/ux-plus'
	import { UxRateEvent } from '@/uni_modules/ux-frame'
	
	const title = ref('')
	const value = ref(2)
	const value1 = ref(3.5)
	const showDoc = ref(false)
	
	function onDoc() {
		plus.openWeb({
			title: '在线文档',
			url: 'https://www.uxframe.cn/component/rate.html',
			// blur: 1,
			success: () => {
				showDoc.value = true
			},
			complete: () => {
				showDoc.value = false
			}
		})
	}
	
	onLoad((e) => {
		title.value = e['title'] ?? ''
	})
	
	function change(e: UxRateEvent) {
		value.value = e.value
	}
	
	function change1(e: UxRateEvent) {
		value1.value = e.value
	}
</script>
<script setup>
	
	import * as plus from '@/uni_modules/ux-plus'
	import { UxRateEvent } from '@/uni_modules/ux-frame'
	
	const title = ref('')
	const value = ref(2)
	const value1 = ref(3.5)
	const showDoc = ref(false)
	
	function onDoc() {
		plus.openWeb({
			title: '在线文档',
			url: 'https://www.uxframe.cn/component/rate.html',
			// blur: 1,
			success: () => {
				showDoc.value = true
			},
			complete: () => {
				showDoc.value = false
			}
		})
	}
	
	onLoad((e) => {
		title.value = e['title'] ?? ''
	})
	
	function change(e: UxRateEvent) {
		value.value = e.value
	}
	
	function change1(e: UxRateEvent) {
		value1.value = e.value
	}
</script>
css
<style lang="scss">
	
</style>
<style lang="scss">
	
</style>