You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue项目问题:点击单个数字如何单独切换背景色而非全部变色

解决Vue评分组件选中状态批量切换问题

问题原因

你当前使用了一个全局布尔值isActive控制所有列表项的激活状态,所有<li>绑定同一个状态变量,导致点击时所有项的状态同时切换,出现全变橙色的问题。

解决方案

需要记录当前选中的具体评分值,而非单一布尔值,以此单独控制每个列表项的激活状态:

修改后的代码

Script部分

<script setup>
import { ref } from "vue";

const rates = ref([1, 2, 3, 4, 5]);
// 用变量记录选中的评分,初始为null表示未选中
const selectedRate = ref(null);

// 点击时传入当前评分,更新选中值
const selectPick = (rate) => {
  selectedRate.value = rate;
};
</script>

Template部分

<template>
  <main>
    <div v-show="!isVisible" class="card-container">
      <div class="content-container">
        ...
        <ul>
          <li
            v-for="rate in rates"
            :key="rate"
            @click="selectPick(rate)"
            class="rating"
            <!-- 判断当前评分是否等于选中值,来添加active类 -->
            :class="{ active: rate === selectedRate }"
          >
            {{ rate }}
          </li>
        </ul>

        <button class="btn">Submit</button>
      </div>
    </div>
  </main>
</template>

说明

  • 用selectedRate存储当前选中的评分值,点击不同评分时直接覆盖这个值,实现单选切换。
  • 每个<li>通过rate === selectedRate判断自身是否处于激活状态,只有匹配的项才会添加active类(显示橙色背景)。

内容的提问来源于stack exchange,提问作者xdreva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 01:27:12