Vue.js 是一款前端框架,提供了方便的数据双向绑定和组件化开发的方式,使得开发者可以快速构建高效的前端应用。在实际开发中,为了提供更好的用户体验,评分功能经常被应用于各种类型的网站和应用中。下面我们将介绍如何使用 Vue.js 实现一款评分组件。
// Rating 组件代码 <template> <div class="rating"> <span v-for="(item, index) in max" :key="index" @click="select(index)" :class="{active: index<=value-1}">★</span> </div> </template> <script> export default { props: { value: { type: Number, required: true }, max: { type: Number, default: 5 } }, methods: { select(index) { this.$emit("input", index+1); } } } </script> <style> .rating { display: inline-block; font-size: 24px; } .rating span { cursor: pointer; color: #ccc; } .rating .active { color: #ffca3b; } </style>
在这段代码中,我们定义了一个名为 Rating 的组件,它接收两个 props:value 和 max。value 表示当前评分的值,max 表示最大评分值,如果不传 max 则默认为 5。同时,我们提供了一个 select 方法,当用户点击评分时,会触发该方法,并通过 $emit 方法向父组件发送 value 的变化。通过 @click 监听用户点击事件,根据 index 和 value 的大小来判断当前评分是否被选中,如果被选中则添加 active 类名,实现评分样式的改变。
使用 Rating 组件非常简单,只需要在父组件中引入并设置 value 的初始值就可以了。同时我们还可以通过 computed 计算属性来实时计算分数的平均值,这样就能够实现更加复杂的评分功能了。